chiark / gitweb /
main: set umask before creating any files
authorMike Gilbert <floppym@gentoo.org>
Thu, 26 Sep 2013 18:39:41 +0000 (20:39 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 26 Sep 2013 18:39:44 +0000 (20:39 +0200)
This avoids a problem when we inherit a non-zero umask from the
initramfs. This would cause /run/systemd to be created with the wrong
mode.

src/core/main.c

index 72bd542af01a9a0978f1f6d99328f87425a96624..0629d142ff556b519214c8e7d683210cdb5343a6 100644 (file)
@@ -1265,6 +1265,10 @@ int main(int argc, char *argv[]) {
 
         log_show_color(isatty(STDERR_FILENO) > 0);
 
+        /* Disable the umask logic */
+        if (getpid() == 1)
+                umask(0);
+
         if (getpid() == 1 && detect_container(NULL) <= 0) {
 
                 /* Running outside of a container as PID 1 */
@@ -1438,14 +1442,10 @@ int main(int argc, char *argv[]) {
         if (serialization)
                 assert_se(fdset_remove(fds, fileno(serialization)) >= 0);
 
-        if (arg_running_as == SYSTEMD_SYSTEM) {
+        if (arg_running_as == SYSTEMD_SYSTEM)
                 /* Become a session leader if we aren't one yet. */
                 setsid();
 
-                /* Disable the umask logic */
-                umask(0);
-        }
-
         /* Move out of the way, so that we won't block unmounts */
         assert_se(chdir("/")  == 0);