]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
gpt-auto-generator: use stack variables and fix minor memleak
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 25 Apr 2018 07:45:28 +0000 (09:45 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 25 Apr 2018 07:45:28 +0000 (09:45 +0200)
src/gpt-auto-generator/gpt-auto-generator.c

index 31087a0812df9141d2c83bd3d63732d87ef6389c..5b03f45372b88a8b602640644fbc342cbfcf443b 100644 (file)
@@ -46,9 +46,9 @@ static bool arg_root_enabled = true;
 static bool arg_root_rw = false;
 
 static int add_cryptsetup(const char *id, const char *what, bool rw, bool require, char **device) {
-        _cleanup_free_ char *e = NULL, *n = NULL, *p = NULL, *d = NULL, *id_escaped = NULL, *what_escaped = NULL;
+        _cleanup_free_ char *e = NULL, *n = NULL, *d = NULL, *id_escaped = NULL, *what_escaped = NULL;
         _cleanup_fclose_ FILE *f = NULL;
-        char *ret;
+        const char *p;
         int r;
 
         assert(id);
@@ -74,10 +74,7 @@ static int add_cryptsetup(const char *id, const char *what, bool rw, bool requir
         if (!what_escaped)
                 return log_oom();
 
-        p = strjoin(arg_dest, "/", n);
-        if (!p)
-                return log_oom();
-
+        p = strjoina(arg_dest, "/", n);
         f = fopen(p, "wxe");
         if (!f)
                 return log_error_errno(errno, "Failed to create unit file %s: %m", p);
@@ -125,11 +122,7 @@ static int add_cryptsetup(const char *id, const char *what, bool rw, bool requir
                         return r;
         }
 
-        free(p);
-        p = strjoin(arg_dest, "/dev-mapper-", e, ".device.d/50-job-timeout-sec-0.conf");
-        if (!p)
-                return log_oom();
-
+        p = strjoina(arg_dest, "/dev-mapper-", e, ".device.d/50-job-timeout-sec-0.conf");
         mkdir_parents_label(p, 0755);
         r = write_string_file(p,
                         "# Automatically generated by systemd-gpt-auto-generator\n\n"
@@ -139,12 +132,16 @@ static int add_cryptsetup(const char *id, const char *what, bool rw, bool requir
         if (r < 0)
                 return log_error_errno(r, "Failed to write device drop-in: %m");
 
-        ret = strappend("/dev/mapper/", id);
-        if (!ret)
-                return log_oom();
+        if (device) {
+                char *ret;
+
+                ret = strappend("/dev/mapper/", id);
+                if (!ret)
+                        return log_oom();
 
-        if (device)
                 *device = ret;
+        }
+
         return 0;
 }
 
@@ -337,8 +334,8 @@ static int add_automount(
                 usec_t timeout) {
 
         _cleanup_free_ char *unit = NULL;
-        _cleanup_free_ char *opt, *p = NULL;
         _cleanup_fclose_ FILE *f = NULL;
+        const char *opt = "noauto", *p;
         int r;
 
         assert(id);
@@ -346,11 +343,7 @@ static int add_automount(
         assert(description);
 
         if (options)
-                opt = strjoin(options, ",noauto");
-        else
-                opt = strdup("noauto");
-        if (!opt)
-                return log_oom();
+                opt = strjoina(options, ",", opt);
 
         r = add_mount(id,
                       what,
@@ -367,10 +360,7 @@ static int add_automount(
         if (r < 0)
                 return log_error_errno(r, "Failed to generate unit name: %m");
 
-        p = strjoin(arg_dest, "/", unit);
-        if (!p)
-                return log_oom();
-
+        p = strjoina(arg_dest, "/", unit);
         f = fopen(p, "wxe");
         if (!f)
                 return log_error_errno(errno, "Failed to create unit file %s: %m", unit);