summaryrefslogtreecommitdiffstats
path: root/init/builtins.c
diff options
context:
space:
mode:
Diffstat (limited to 'init/builtins.c')
-rw-r--r--init/builtins.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/init/builtins.c b/init/builtins.c
index da41b89..bb963c1 100644
--- a/init/builtins.c
+++ b/init/builtins.c
@@ -322,6 +322,14 @@ int do_mkdir(int nargs, char **args)
if (_chown(args[1], uid, gid) < 0) {
return -errno;
}
+
+ /* chown may have cleared S_ISUID and S_ISGID, chmod again */
+ if (mode & (S_ISUID | S_ISGID)) {
+ ret = _chmod(args[1], mode);
+ if (ret == -1) {
+ return -errno;
+ }
+ }
}
return 0;