vpick: take separate root_fd and dir_fd arguments
Mirror how chaseat() works these days: instead of a single toplevel_fd that serves as both the root (chroot) boundary and the directory that resolution starts from, path_pick() now takes a separate root_fd and dir_fd. This lets callers resolve a path relative to a specific directory fd while confining symlink and absolute-path resolution to a root directory fd. All existing callers are updated to pass the same fd for both, preserving their current behaviour.
This commit is contained in:
@@ -3719,8 +3719,9 @@ static int pin_rootfs(
|
||||
if (context->root_image) {
|
||||
_cleanup_(pick_result_done) PickResult result = PICK_RESULT_NULL;
|
||||
|
||||
r = path_pick(/* toplevel_path= */ NULL,
|
||||
/* toplevel_fd= */ AT_FDCWD,
|
||||
r = path_pick(/* root_path= */ NULL,
|
||||
/* root_fd= */ AT_FDCWD,
|
||||
/* dir_fd= */ AT_FDCWD,
|
||||
context->root_image,
|
||||
pick_filter_image_raw,
|
||||
ELEMENTSOF(pick_filter_image_raw),
|
||||
@@ -3760,8 +3761,9 @@ static int pin_rootfs(
|
||||
if (context->root_directory) {
|
||||
_cleanup_(pick_result_done) PickResult result = PICK_RESULT_NULL;
|
||||
|
||||
r = path_pick(/* toplevel_path= */ NULL,
|
||||
/* toplevel_fd= */ AT_FDCWD,
|
||||
r = path_pick(/* root_path= */ NULL,
|
||||
/* root_fd= */ AT_FDCWD,
|
||||
/* dir_fd= */ AT_FDCWD,
|
||||
context->root_directory,
|
||||
pick_filter_image_dir,
|
||||
ELEMENTSOF(pick_filter_image_dir),
|
||||
@@ -3789,8 +3791,9 @@ static int pin_rootfs(
|
||||
if (context->root_mstack) {
|
||||
_cleanup_(pick_result_done) PickResult result = PICK_RESULT_NULL;
|
||||
|
||||
r = path_pick(/* toplevel_path= */ NULL,
|
||||
/* toplevel_fd= */ AT_FDCWD,
|
||||
r = path_pick(/* root_path= */ NULL,
|
||||
/* root_fd= */ AT_FDCWD,
|
||||
/* dir_fd= */ AT_FDCWD,
|
||||
context->root_mstack,
|
||||
pick_filter_image_mstack,
|
||||
/* n_filters= */ 1,
|
||||
|
||||
Reference in New Issue
Block a user