From be1117f712904b6a16b05db946d71e09ee3a5519 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 5 Sep 2025 14:12:37 +0200 Subject: [PATCH] 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. --- src/basic/chase.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/basic/chase.c b/src/basic/chase.c index ddef1944874..af9bc7b823b 100644 --- a/src/basic/chase.c +++ b/src/basic/chase.c @@ -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; -- 2.47.3