]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
env-util: use more _cleanup_ in replace_env_argv()
authorDavid Tardon <dtardon@redhat.com>
Fri, 21 Apr 2023 12:40:54 +0000 (14:40 +0200)
committerDavid Tardon <dtardon@redhat.com>
Thu, 27 Apr 2023 19:42:38 +0000 (21:42 +0200)
src/basic/env-util.c

index 03b4547cf33f93147446828a4eb723049e99e63a..5a933d7f08faec8a768eb58f3c5408581b3532c7 100644 (file)
@@ -746,7 +746,8 @@ char **replace_env_argv(char **argv, char **env) {
                 /* If $FOO appears as single word, replace it by the split up variable */
                 if ((*i)[0] == '$' && !IN_SET((*i)[1], '{', '$')) {
                         char *e;
-                        char **w, **m = NULL;
+                        char **w;
+                        _cleanup_strv_free_ char **m = NULL;
                         size_t q;
 
                         e = strv_env_get(env, *i+1);
@@ -758,8 +759,7 @@ char **replace_env_argv(char **argv, char **env) {
                                         ret[k] = NULL;
                                         return NULL;
                                 }
-                        } else
-                                m = NULL;
+                        }
 
                         q = strv_length(m);
                         l = l + q - 1;
@@ -767,14 +767,13 @@ char **replace_env_argv(char **argv, char **env) {
                         w = reallocarray(ret, l + 1, sizeof(char *));
                         if (!w) {
                                 ret[k] = NULL;
-                                strv_free(m);
                                 return NULL;
                         }
 
                         ret = w;
                         if (m) {
                                 memcpy(ret + k, m, q * sizeof(char*));
-                                free(m);
+                                m = mfree(m);
                         }
 
                         k += q;