1
0
mirror of https://github.com/systemd/systemd.git synced 2024-11-02 19:21:53 +03:00

tree-wide: no need to pass excess flags to open()/openat() if O_PATH is passed

As described in the documentation:

When O_PATH is specified in flags, flag bits other than O_CLOEXEC,
O_DIRECTORY, and O_NOFOLLOW are ignored.

So, we can remove unnecessary flags in a case when O_PATH is passed
to the open() or openat().
This commit is contained in:
Alexander Kuleshov 2016-03-02 00:25:09 +06:00
parent 6014237390
commit c4b6915670
3 changed files with 5 additions and 5 deletions

View File

@ -47,7 +47,7 @@ static int fd_fdinfo_mnt_id(int fd, const char *filename, int flags, int *mnt_id
if ((flags & AT_EMPTY_PATH) && isempty(filename)) if ((flags & AT_EMPTY_PATH) && isempty(filename))
xsprintf(path, "/proc/self/fdinfo/%i", fd); xsprintf(path, "/proc/self/fdinfo/%i", fd);
else { else {
subfd = openat(fd, filename, O_RDONLY|O_CLOEXEC|O_NOCTTY|O_PATH); subfd = openat(fd, filename, O_CLOEXEC|O_PATH);
if (subfd < 0) if (subfd < 0)
return -errno; return -errno;
@ -230,7 +230,7 @@ int path_is_mount_point(const char *t, int flags) {
if (!parent) if (!parent)
return -ENOMEM; return -ENOMEM;
fd = openat(AT_FDCWD, parent, O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC|O_PATH); fd = openat(AT_FDCWD, parent, O_DIRECTORY|O_CLOEXEC|O_PATH);
if (fd < 0) if (fd < 0)
return -errno; return -errno;

View File

@ -110,7 +110,7 @@ ssize_t fgetxattrat_fake(int dirfd, const char *filename, const char *attribute,
/* The kernel doesn't have a fgetxattrat() command, hence let's emulate one */ /* The kernel doesn't have a fgetxattrat() command, hence let's emulate one */
fd = openat(dirfd, filename, O_RDONLY|O_CLOEXEC|O_NOCTTY|O_PATH|(flags & AT_SYMLINK_NOFOLLOW ? O_NOFOLLOW : 0)); fd = openat(dirfd, filename, O_CLOEXEC|O_PATH|(flags & AT_SYMLINK_NOFOLLOW ? O_NOFOLLOW : 0));
if (fd < 0) if (fd < 0)
return -errno; return -errno;

View File

@ -613,7 +613,7 @@ static int path_set_perms(Item *i, const char *path) {
* with AT_SYMLINK_NOFOLLOW, hence we emulate it here via * with AT_SYMLINK_NOFOLLOW, hence we emulate it here via
* O_PATH. */ * O_PATH. */
fd = open(path, O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH|O_NOATIME); fd = open(path, O_NOFOLLOW|O_CLOEXEC|O_PATH);
if (fd < 0) if (fd < 0)
return log_error_errno(errno, "Adjusting owner and mode for %s failed: %m", path); return log_error_errno(errno, "Adjusting owner and mode for %s failed: %m", path);
@ -804,7 +804,7 @@ static int path_set_acls(Item *item, const char *path) {
assert(item); assert(item);
assert(path); assert(path);
fd = open(path, O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH|O_NOATIME); fd = open(path, O_NOFOLLOW|O_CLOEXEC|O_PATH);
if (fd < 0) if (fd < 0)
return log_error_errno(errno, "Adjusting ACL of %s failed: %m", path); return log_error_errno(errno, "Adjusting ACL of %s failed: %m", path);