]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
networkctl: fix a potential memory leak
authorFrantisek Sumsal <frantisek@sumsal.cz>
Mon, 22 May 2023 17:59:19 +0000 (19:59 +0200)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 23 May 2023 07:50:18 +0000 (16:50 +0900)
Resolves: CID#1512516
Follow-up to 96bab8fd63.

src/network/networkctl.c

index 97e6cc7f9ed9cf12bd638c15c2f1d05e4d9de87f..0037c8e8ceb224363ec596c18c2914e354efb44c 100644 (file)
@@ -3498,12 +3498,19 @@ static int parse_argv(int argc, char *argv[]) {
                         if (isempty(optarg))
                                 return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Empty drop-in file name.");
 
-                        if (!endswith(optarg, ".conf"))
-                                arg_drop_in = strjoin(optarg, ".conf");
-                        else
-                                arg_drop_in = strdup(optarg);
-                        if (!arg_drop_in)
-                                return log_oom();
+                        if (!endswith(optarg, ".conf")) {
+                                char *conf;
+
+                                conf = strjoin(optarg, ".conf");
+                                if (!conf)
+                                        return log_oom();
+
+                                free_and_replace(arg_drop_in, conf);
+                        } else {
+                                r = free_and_strdup(&arg_drop_in, optarg);
+                                if (r < 0)
+                                        return log_oom();
+                        }
 
                         if (!filename_is_valid(arg_drop_in))
                                 return log_error_errno(SYNTHETIC_ERRNO(EINVAL),