]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
repart: Create temporary root directory using var_tmp_dir()
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Tue, 14 Feb 2023 10:17:32 +0000 (11:17 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Tue, 14 Feb 2023 11:51:40 +0000 (12:51 +0100)
This allows users to override the directory used with environment
variables.

src/partition/repart.c

index 43f25e7e59a0a59f59fdb66c9813daf4b95aeb9a..93dfb5fb3e8446766e3056090c24abf9ccbf1ae8 100644 (file)
@@ -3872,17 +3872,22 @@ static bool partition_needs_populate(Partition *p) {
 
 static int partition_populate_directory(Partition *p, const Set *denylist, char **ret) {
         _cleanup_(rm_rf_physical_and_freep) char *root = NULL;
-        _cleanup_close_ int rfd = -EBADF;
+        const char *vt;
         int r;
 
         assert(ret);
 
-        rfd = mkdtemp_open("/var/tmp/repart-XXXXXX", 0, &root);
-        if (rfd < 0)
-                return log_error_errno(rfd, "Failed to create temporary directory: %m");
+        r = var_tmp_dir(&vt);
+        if (r < 0)
+                return log_error_errno(r, "Could not determine temporary directory: %m");
 
-        if (fchmod(rfd, 0755) < 0)
-                return log_error_errno(errno, "Failed to change mode of temporary directory: %m");
+        r = tempfn_random_child(vt, "repart", &root);
+        if (r < 0)
+                return log_error_errno(r, "Failed to generate temporary directory: %m");
+
+        r = mkdir(root, 0755);
+        if (r < 0)
+                return log_error_errno(errno, "Failed to create temporary directory: %m");
 
         r = do_copy_files(p, root, denylist);
         if (r < 0)