mirror of
https://github.com/systemd/systemd.git
synced 2025-03-08 08:58:27 +03:00
chattr-util: move O_PATH conversion from read_attr_at() to read_attr_fd()
This commit is contained in:
parent
7f8c27758b
commit
e837c257d0
@ -145,6 +145,11 @@ int read_attr_fd(int fd, unsigned *ret) {
|
||||
if (!S_ISDIR(st.st_mode) && !S_ISREG(st.st_mode))
|
||||
return -ENOTTY;
|
||||
|
||||
_cleanup_close_ int fd_close = -EBADF;
|
||||
fd = fd_reopen_condition(fd, O_RDONLY|O_CLOEXEC|O_NOCTTY, O_PATH, &fd_close); /* drop O_PATH if it is set */
|
||||
if (fd < 0)
|
||||
return fd;
|
||||
|
||||
return RET_NERRNO(ioctl(fd, FS_IOC_GETFLAGS, ret));
|
||||
}
|
||||
|
||||
@ -155,11 +160,9 @@ int read_attr_at(int dir_fd, const char *path, unsigned *ret) {
|
||||
assert(dir_fd >= 0 || dir_fd == AT_FDCWD);
|
||||
assert(ret);
|
||||
|
||||
if (isempty(path)) {
|
||||
fd = fd_reopen_condition(dir_fd, O_RDONLY|O_CLOEXEC|O_NOCTTY, O_PATH, &fd_close); /* drop O_PATH if it is set */
|
||||
if (fd < 0)
|
||||
return fd;
|
||||
} else {
|
||||
if (isempty(path) && dir_fd != AT_FDCWD)
|
||||
fd = dir_fd;
|
||||
else {
|
||||
fd_close = xopenat(dir_fd, path, O_RDONLY|O_CLOEXEC|O_NOCTTY|O_NOFOLLOW);
|
||||
if (fd_close < 0)
|
||||
return fd_close;
|
||||
|
Loading…
x
Reference in New Issue
Block a user