]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
systemctl: fix memleak
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 26 Jan 2025 19:17:27 +0000 (04:17 +0900)
committerLuca Boccassi <luca.boccassi@gmail.com>
Sun, 26 Jan 2025 21:04:11 +0000 (21:04 +0000)
Fixes a bug introduced by adb6cd9be2b7e9e614d2b5835c7b70cf8eacc852.

Fixes #36178.

src/systemctl/systemctl-is-system-running.c

index 59be6a7a7ecfef7a78520d9ff1958888afa4c88c..8d5303c2d83ffc0d1b5e699aa2070952cd30a23a 100644 (file)
@@ -66,6 +66,10 @@ int verb_is_system_running(int argc, char *argv[], void *userdata) {
         }
 
         if (arg_wait && STR_IN_SET(state, "initializing", "starting")) {
+                /* The signal handler will allocate memory and assign to 'state', hence need to free previous
+                 * one before entering the event loop. */
+                state = mfree(state);
+
                 r = sd_event_loop(event);
                 if (r < 0) {
                         log_warning_errno(r, "Failed to get property from event loop: %m");
@@ -73,6 +77,8 @@ int verb_is_system_running(int argc, char *argv[], void *userdata) {
                                 puts("unknown");
                         return EXIT_FAILURE;
                 }
+
+                assert(state);
         }
 
         if (!arg_quiet)