summaryrefslogtreecommitdiff
path: root/src/basic/mkdir.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2017-08-09 12:46:09 +0200
committerLennart Poettering <lennart@poettering.net>2017-08-10 15:02:50 +0200
commit8f2c2f20b6383d7528ad86a26780b36f2a02e2d3 (patch)
tree373d977b3b0d702d191511558f8eb7c6f4228e4e /src/basic/mkdir.c
parent43b1f7092d2016699d2f2cc4de0dacd654e0be0e (diff)
downloadsystemd-8f2c2f20b6383d7528ad86a26780b36f2a02e2d3.tar.gz
mkdir: chmod_and_chown() returns errors as "return -errno", not in errno itself
Diffstat (limited to 'src/basic/mkdir.c')
-rw-r--r--src/basic/mkdir.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/basic/mkdir.c b/src/basic/mkdir.c
index 6b1a98402c..7db09fc6a1 100644
--- a/src/basic/mkdir.c
+++ b/src/basic/mkdir.c
@@ -31,10 +31,13 @@
int mkdir_safe_internal(const char *path, mode_t mode, uid_t uid, gid_t gid, mkdir_func_t _mkdir) {
struct stat st;
+ int r;
- if (_mkdir(path, mode) >= 0)
- if (chmod_and_chown(path, mode, uid, gid) < 0)
- return -errno;
+ if (_mkdir(path, mode) >= 0) {
+ r = chmod_and_chown(path, mode, uid, gid);
+ if (r < 0)
+ return r;
+ }
if (lstat(path, &st) < 0)
return -errno;