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

index e3ae1a9663ce2a005911dac476a2a7ad2a138ad9..03b4547cf33f93147446828a4eb723049e99e63a 100644 (file)
@@ -732,7 +732,7 @@ char *replace_env_n(const char *format, size_t n, char **env, unsigned flags) {
 }
 
 char **replace_env_argv(char **argv, char **env) {
-        char **ret;
+        _cleanup_strv_free_ char **ret = NULL;
         size_t k = 0, l = 0;
 
         l = strv_length(argv);
@@ -756,7 +756,6 @@ char **replace_env_argv(char **argv, char **env) {
                                 r = strv_split_full(&m, e, WHITESPACE, EXTRACT_RELAX|EXTRACT_UNQUOTE);
                                 if (r < 0) {
                                         ret[k] = NULL;
-                                        strv_free(ret);
                                         return NULL;
                                 }
                         } else
@@ -768,7 +767,6 @@ char **replace_env_argv(char **argv, char **env) {
                         w = reallocarray(ret, l + 1, sizeof(char *));
                         if (!w) {
                                 ret[k] = NULL;
-                                strv_free(ret);
                                 strv_free(m);
                                 return NULL;
                         }
@@ -785,15 +783,13 @@ char **replace_env_argv(char **argv, char **env) {
 
                 /* If ${FOO} appears as part of a word, replace it by the variable as-is */
                 ret[k] = replace_env(*i, env, 0);
-                if (!ret[k]) {
-                        strv_free(ret);
+                if (!ret[k])
                         return NULL;
-                }
                 k++;
         }
 
         ret[k] = NULL;
-        return ret;
+        return TAKE_PTR(ret);
 }
 
 int getenv_bool(const char *p) {