From c9630164b869e109bf2960968fc583449ccf0875 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 19 Oct 2018 11:42:11 +0200 Subject: [PATCH] chown-recursive: TAKE_FD() is your friend (cherry-picked from commit cd6b7d50c337b3676a3d5fc2188ff298dcbdb939) Related: #1643368 --- src/core/chown-recursive.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/core/chown-recursive.c b/src/core/chown-recursive.c index 447b771267..7767301f7d 100644 --- a/src/core/chown-recursive.c +++ b/src/core/chown-recursive.c @@ -111,7 +111,6 @@ static int chown_recursive_internal(int fd, const struct stat *st, uid_t uid, gi int path_chown_recursive(const char *path, uid_t uid, gid_t gid) { _cleanup_close_ int fd = -1; struct stat st; - int r; fd = open(path, O_RDONLY|O_DIRECTORY|O_CLOEXEC|O_NOFOLLOW|O_NOATIME); if (fd < 0) @@ -130,8 +129,5 @@ int path_chown_recursive(const char *path, uid_t uid, gid_t gid) { (!gid_is_valid(gid) || st.st_gid == gid)) return 0; - r = chown_recursive_internal(fd, &st, uid, gid); - fd = -1; /* we donated the fd to the call, regardless if it succeeded or failed */ - - return r; + return chown_recursive_internal(TAKE_FD(fd), &st, uid, gid); /* we donate the fd to the call, regardless if it succeeded or failed */ }