summaryrefslogtreecommitdiff
path: root/src/shared/base-filesystem.c
diff options
context:
space:
mode:
authorDjalal Harouni <tixxdz@opendz.org>2017-03-16 03:30:15 +0100
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2017-03-15 22:30:15 -0400
commitd1d59eeb4720371d255fcee025e9e7d96bd625d1 (patch)
treea8bca53c81bf904779232a3a6f6ba1b34129e281 /src/shared/base-filesystem.c
parentbda99fab3104095420d3ee03593d07469153f6c4 (diff)
downloadsystemd-d1d59eeb4720371d255fcee025e9e7d96bd625d1.tar.gz
systemd-d1d59eeb4720371d255fcee025e9e7d96bd625d1.tar.bz2
systemd-d1d59eeb4720371d255fcee025e9e7d96bd625d1.zip
base-filesystem: skip fchownat() if the previous mkdirat() on same path failed (#5548)
If we are working on a path that was marked to be ignored on errors, and the mkdirat() fails then add a continue statement and skip fchownat() call. This avoids the case where UID/GID are valid and we run fchownat() on non existent path which will fail hard even on paths that we want to ignore in case of errors.
Diffstat (limited to 'src/shared/base-filesystem.c')
-rw-r--r--src/shared/base-filesystem.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/shared/base-filesystem.c b/src/shared/base-filesystem.c
index 127cbe44e3..f2d8bcf6e3 100644
--- a/src/shared/base-filesystem.c
+++ b/src/shared/base-filesystem.c
@@ -117,6 +117,8 @@ int base_filesystem_create(const char *root, uid_t uid, gid_t gid) {
if (!table[i].ignore_failure)
return -errno;
+
+ continue;
}
if (uid != UID_INVALID || gid != UID_INVALID) {