]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
Set umask before populating /dev and restore it after.
authorAlexander Vladimirov <alexander.idkfa.vladimirov@gmail.com>
Tue, 8 Jan 2013 01:08:54 +0000 (09:08 +0800)
committerStéphane Graber <stgraber@ubuntu.com>
Tue, 8 Jan 2013 17:07:34 +0000 (12:07 -0500)
According to docs, mknod clears each permission bit whose
corresponding bit in the process umask is set, so we should fix it
before creating device nodes.

Signed-off-by: Alexander Vladimirov <alexander.idkfa.vladimirov@gmail.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
src/lxc/conf.c

index 4f041dca45f0f7e62ba88a1b90ae3868f8fb7f2c..1c02850a25b8178ad2e4eb80ab9b213f8c4dffdb 100644 (file)
@@ -963,6 +963,7 @@ static int setup_autodev(char *root)
        struct lxc_devs *d;
        char path[MAXPATHLEN];
        int i;
+       mode_t cmask;
 
        INFO("Creating initial consoles under %s/dev\n", root);
 
@@ -974,6 +975,7 @@ static int setup_autodev(char *root)
                run_makedev(path);
 
        INFO("Populating /dev under %s\n", root);
+       cmask = umask(S_IXUSR | S_IXGRP | S_IXOTH);
        for (i = 0; i < sizeof(lxc_devs) / sizeof(lxc_devs[0]); i++) {
                d = &lxc_devs[i];
                ret = snprintf(path, MAXPATHLEN, "%s/dev/%s", root, d->name);
@@ -985,6 +987,7 @@ static int setup_autodev(char *root)
                        return -1;
                }
        }
+       umask(cmask);
 
        INFO("Populated /dev under %s\n", root);
        return 0;