| From c9630164b869e109bf2960968fc583449ccf0875 Mon Sep 17 00:00:00 2001 |
| From: Lennart Poettering <lennart@poettering.net> |
| 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 |
| |
| |
| @@ -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 */ |
| } |