chiark / gitweb /
util: when using basename() for creating temporary files, verify the resulting name...
[elogind.git] / src / journal / coredump.c
index d889ed1f8f28ef0e95ff5aa1ad404fc40437d269..8678ec6a59e131db22ac43924728eafd0d7dee9f 100644 (file)
@@ -120,10 +120,11 @@ static int parse_config(void) {
                 {}
         };
 
-        return config_parse(NULL, "/etc/systemd/coredump.conf", NULL,
-                            "Coredump\0",
-                            config_item_table_lookup, items,
-                            false, false, true, NULL);
+        return config_parse_many("/etc/systemd/coredump.conf",
+                                 CONF_DIRS_NULSTR("systemd/coredump.conf"),
+                                 "Coredump\0",
+                                 config_item_table_lookup, items,
+                                 false, NULL);
 }
 
 static int fix_acl(int fd, uid_t uid) {
@@ -305,9 +306,9 @@ static int save_external_coredump(
         if (r < 0)
                 return log_error_errno(r, "Failed to determine coredump file name: %m");
 
-        tmp = tempfn_random(fn);
-        if (!tmp)
-                return log_oom();
+        r = tempfn_random(fn, &tmp);
+        if (r < 0)
+                return log_error_errno(r, "Failed to determine temporary file name: %m");
 
         mkdir_p_label("/var/lib/systemd/coredump", 0755);
 
@@ -351,9 +352,9 @@ static int save_external_coredump(
                         goto uncompressed;
                 }
 
-                tmp_compressed = tempfn_random(fn_compressed);
-                if (!tmp_compressed) {
-                        log_oom();
+                r = tempfn_random(fn_compressed, &tmp_compressed);
+                if (r < 0) {
+                        log_error_errno(r, "Failed to determine temporary file name for %s: %m", fn_compressed);
                         goto uncompressed;
                 }