chase: mask away CHASE_MUST_BE_REGULAR in chase_openat()

We pin the parent directory of the specified directory via CHASE_PARENT,
but if we do that we really should mask off CHASE_MUST_BE_REGULAR,
because a parent dir of course is a dir, nothing else. The
CHASE_MUST_BE_REGULAR after all should apply to the file created in that
dir, not to the parent.
This commit is contained in:
Lennart Poettering
2025-09-18 09:36:44 +02:00
parent 0c25f8fd0b
commit be1117f712
+2 -2
View File
@@ -796,7 +796,7 @@ int chase_and_open(
/* xopen_flags = */ 0,
MODE_INVALID);
r = chase(path, root, CHASE_PARENT|chase_flags, &p, &path_fd);
r = chase(path, root, (CHASE_PARENT|chase_flags)&~CHASE_MUST_BE_REGULAR, &p, &path_fd);
if (r < 0)
return r;
assert(path_fd >= 0);
@@ -1001,7 +1001,7 @@ int chase_and_openat(
/* xopen_flags = */ 0,
MODE_INVALID);
r = chaseat(dir_fd, path, chase_flags|CHASE_PARENT, &p, &path_fd);
r = chaseat(dir_fd, path, (chase_flags|CHASE_PARENT)&~CHASE_MUST_BE_REGULAR, &p, &path_fd);
if (r < 0)
return r;