fs-util: make chmod_and_chown_at() work with empty path and AT_FDCWD
Follow-up for 7d000133c2.
Fixes CID#1500608.
This commit is contained in:
committed by
Lennart Poettering
parent
a579990277
commit
340bc268c8
+9
-1
@@ -204,9 +204,17 @@ int chmod_and_chown_at(int dir_fd, const char *path, mode_t mode, uid_t uid, gid
|
||||
fd = openat(dir_fd, path, O_PATH|O_CLOEXEC|O_NOFOLLOW);
|
||||
if (fd < 0)
|
||||
return -errno;
|
||||
dir_fd = fd;
|
||||
|
||||
} else if (dir_fd == AT_FDCWD) {
|
||||
/* Let's acquire an O_PATH fd of the current directory */
|
||||
fd = openat(dir_fd, ".", O_PATH|O_CLOEXEC|O_NOFOLLOW|O_DIRECTORY);
|
||||
if (fd < 0)
|
||||
return -errno;
|
||||
dir_fd = fd;
|
||||
}
|
||||
|
||||
return fchmod_and_chown(path ? fd : dir_fd, mode, uid, gid);
|
||||
return fchmod_and_chown(dir_fd, mode, uid, gid);
|
||||
}
|
||||
|
||||
int fchmod_and_chown_with_fallback(int fd, const char *path, mode_t mode, uid_t uid, gid_t gid) {
|
||||
|
||||
Reference in New Issue
Block a user