From: Lennart Poettering Date: Wed, 25 Feb 2026 11:51:29 +0000 (+0100) Subject: chase: drop wrong optimization X-Git-Tag: v260-rc2~23^2~5 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0384875582fca36ced71eea1655b644fa00179e4;p=thirdparty%2Fsystemd.git chase: drop wrong optimization 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. --- 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) {