From 0384875582fca36ced71eea1655b644fa00179e4 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 25 Feb 2026 12:51:29 +0100 Subject: [PATCH] chase: drop wrong optimization MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The same optimization is already applied in the very similar dir_fd_is_root() check a few lines up – with the exception that it doesn't accept AT_FCWD there. And frankly turning off CHASE_AT_RESOLVE_IN_ROOT if we operate on AT_FCWD is simply wrong. Hence remove this code. --- src/basic/chase.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/basic/chase.c b/src/basic/chase.c index 6e8cc15f2ef..8030c740796 100644 --- a/src/basic/chase.c +++ b/src/basic/chase.c @@ -277,15 +277,6 @@ int chaseat(int dir_fd, const char *path, ChaseFlags flags, char **ret_path, int dir_fd = _dir_fd; flags &= ~CHASE_AT_RESOLVE_IN_ROOT; - } else if (FLAGS_SET(flags, CHASE_AT_RESOLVE_IN_ROOT)) { - /* If we get AT_FDCWD or dir_fd points to "/", then we always resolve symlinks relative to - * the host's root. Hence, CHASE_AT_RESOLVE_IN_ROOT is meaningless. */ - - r = dir_fd_is_root_or_cwd(dir_fd); - if (r < 0) - return r; - if (r > 0) - flags &= ~CHASE_AT_RESOLVE_IN_ROOT; } if (!ret_path && ret_fd && (flags & (CHASE_AT_RESOLVE_IN_ROOT|CHASE_NO_SHORTCUT_MASK)) == 0) {