]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
firstboot: use free_and_strdup, free_and_replace
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 16 Jul 2019 15:16:42 +0000 (17:16 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 17 Jul 2019 10:07:19 +0000 (12:07 +0200)
src/firstboot/firstboot.c

index 74b83f348b8323a62239dfa02fb11c738d63c1fe..dca3a25e34a7736175006c4201f5d952375217e4 100644 (file)
@@ -186,21 +186,15 @@ static int prompt_loop(const char *text, char **l, bool (*is_valid)(const char *
 
                 r = safe_atou(p, &u);
                 if (r >= 0) {
-                        char *c;
-
                         if (u <= 0 || u > strv_length(l)) {
                                 log_error("Specified entry number out of range.");
                                 continue;
                         }
 
                         log_info("Selected '%s'.", l[u-1]);
-
-                        c = strdup(l[u-1]);
-                        if (!c)
+                        if (free_and_strdup(ret, l[u-1]) < 0)
                                 return log_oom();
 
-                        free(*ret);
-                        *ret = c;
                         return 0;
                 }
 
@@ -209,10 +203,7 @@ static int prompt_loop(const char *text, char **l, bool (*is_valid)(const char *
                         continue;
                 }
 
-                free(*ret);
-                *ret = p;
-                p = 0;
-                return 0;
+                return free_and_replace(*ret, p);
         }
 }