]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
machined: fix invalid edge case in machine_new
authorSam Leonard <sam.leonard@codethink.co.uk>
Mon, 22 Apr 2024 15:11:28 +0000 (16:11 +0100)
committerLuca Boccassi <luca.boccassi@gmail.com>
Mon, 22 Apr 2024 20:37:05 +0000 (22:37 +0200)
src/machine/machine.c

index 309bffa3c8075bbe0b0ccd5aa2008cf7cd7dedf5..3e5012ebb6c190c06bc200ef981cb033609afd27 100644 (file)
@@ -88,20 +88,25 @@ Machine* machine_free(Machine *m) {
         while (m->operations)
                 operation_free(m->operations);
 
-        if (m->in_gc_queue)
+        if (m->in_gc_queue) {
+                assert(m->manager);
                 LIST_REMOVE(gc_queue, m->manager->machine_gc_queue, m);
+        }
 
         machine_release_unit(m);
 
         free(m->scope_job);
 
-        (void) hashmap_remove(m->manager->machines, m->name);
+        if (m->manager) {
+                (void) hashmap_remove(m->manager->machines, m->name);
 
-        if (m->manager->host_machine == m)
-                m->manager->host_machine = NULL;
+                if (m->manager->host_machine == m)
+                        m->manager->host_machine = NULL;
+        }
 
         if (pidref_is_set(&m->leader)) {
-                (void) hashmap_remove_value(m->manager->machine_leaders, PID_TO_PTR(m->leader.pid), m);
+                if (m->manager)
+                        (void) hashmap_remove_value(m->manager->machine_leaders, PID_TO_PTR(m->leader.pid), m);
                 pidref_done(&m->leader);
         }