Conversation
proc_resolve_sysroot_create_path located the leaf separator with
strrchr on the resolved sysroot path. A guest path ending in a slash
made strrchr match that trailing slash, so the parent buffer collapsed
to the target itself. The parent-existence access() then failed and the
resolver wrongly fell back to the host literal path (or auto-created the
target as if it were its own parent), so mkdir("/dir/") reported ENOENT
or EEXIST instead of creating the directory in the sysroot.
Drop trailing slashes before splitting off the leaf so the check sees
the real parent. Guard all-slash guest paths ("/", "///") up front:
they name the root, which always exists and has no parent, and trimming
would otherwise walk strrchr into the sysroot prefix and trip the
containment check (ELOOP) on a multi-component sysroot.
Close #100
Contributor
Author
|
@doanbaotrung , Please validate this PR. |
|
It worked! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
proc_resolve_sysroot_create_path located the leaf separator with strrchr on the resolved sysroot path. A guest path ending in a slash made strrchr match that trailing slash, so the parent buffer collapsed to the target itself. The parent-existence access() then failed and the resolver wrongly fell back to the host literal path (or auto-created the target as if it were its own parent), so mkdir("/dir/") reported ENOENT or EEXIST instead of creating the directory in the sysroot.
Drop trailing slashes before splitting off the leaf so the check sees the real parent. Guard all-slash guest paths ("/", "///") up front: they name the root, which always exists and has no parent, and trimming would otherwise walk strrchr into the sysroot prefix and trip the containment check (ELOOP) on a multi-component sysroot.
Close #100
Summary by cubic
Fixes trailing-slash handling in sysroot path resolution so mkdir("/dir/") creates the directory under the sysroot instead of returning ENOENT/EEXIST or falling back to the host. Also correctly treats "/", "///" as the root.
proc_resolve_sysroot_create_pathso the parent check uses the real parent.Written for commit fb7bb95. Summary will update on new commits.