]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core: be more paranoid when mixing umask and fopen()
authorLennart Poettering <lennart@poettering.net>
Thu, 7 Apr 2016 14:15:26 +0000 (16:15 +0200)
committerLennart Poettering <lennart@poettering.net>
Tue, 12 Apr 2016 11:43:32 +0000 (13:43 +0200)
Let's be extra careful with the umask when we use simple fopen(), as this
creates files with 0777 by default.

src/basic/util.c
src/core/machine-id-setup.c
src/core/main.c

index f1e3bd5b4804617de450af46bf8f958936afb7f3..6996527ec4fc1602fa02c76b1f4fd8f07b872583 100644 (file)
@@ -55,6 +55,7 @@
 #include "string-util.h"
 #include "strv.h"
 #include "time-util.h"
+#include "umask-util.h"
 #include "user-util.h"
 #include "util.h"
 
@@ -781,7 +782,8 @@ int update_reboot_param_file(const char *param) {
         int r = 0;
 
         if (param) {
-                r = write_string_file(REBOOT_PARAM_FILE, param, WRITE_STRING_FILE_CREATE);
+                RUN_WITH_UMASK(0022)
+                        r = write_string_file(REBOOT_PARAM_FILE, param, WRITE_STRING_FILE_CREATE);
                 if (r < 0)
                         return log_error_errno(r, "Failed to write reboot param to "REBOOT_PARAM_FILE": %m");
         } else
index 7b25349c07a591bf22e2cabe67e8c53b94a48319..86da16c31e50193564481539833976f117b45497 100644 (file)
@@ -259,9 +259,8 @@ int machine_id_setup(const char *root, sd_id128_t machine_id) {
         /* Hmm, we couldn't write it? So let's write it to
          * /run/machine-id as a replacement */
 
-        RUN_WITH_UMASK(0022) {
+        RUN_WITH_UMASK(0022)
                 r = write_string_file(run_machine_id, id, WRITE_STRING_FILE_CREATE);
-        }
         if (r < 0) {
                 (void) unlink(run_machine_id);
                 return log_error_errno(r, "Cannot write %s: %m", run_machine_id);
index a428e345e087baf58a19209fc379e72422546d07..2912608435732beae6c3abc031ddebe7a5af3223 100644 (file)
@@ -81,6 +81,7 @@
 #include "strv.h"
 #include "switch-root.h"
 #include "terminal-util.h"
+#include "umask-util.h"
 #include "user-util.h"
 #include "virt.h"
 #include "watchdog.h"
@@ -1237,7 +1238,8 @@ static int write_container_id(void) {
         if (isempty(c))
                 return 0;
 
-        r = write_string_file("/run/systemd/container", c, WRITE_STRING_FILE_CREATE);
+        RUN_WITH_UMASK(0022)
+                r = write_string_file("/run/systemd/container", c, WRITE_STRING_FILE_CREATE);
         if (r < 0)
                 return log_warning_errno(r, "Failed to write /run/systemd/container, ignoring: %m");