machined: fix bogus error check for machine_link()
authorMike Yuan <me@yhndnzj.com>
Fri, 20 Sep 2024 21:58:14 +0000 (23:58 +0200)
committerLuca Boccassi <luca.boccassi@gmail.com>
Tue, 8 Oct 2024 15:39:12 +0000 (16:39 +0100)
(cherry picked from commit 533c20ca5bd7002d8983b7d48f47ff78c25347c3)

src/machine/machine.c
src/machine/machined-dbus.c
src/machine/machined.h

index 0eb9a55e5f74dde6cd34dbecec1fa99f09e46808..c3ce3e325bf78d8a1806e76e18ff9536eba1f269 100644 (file)
@@ -53,6 +53,7 @@ int machine_new(MachineClass class, const char *name, Machine **ret) {
                 return -ENOMEM;
 
         *m = (Machine) {
+                .class = class,
                 .leader = PIDREF_NULL,
                 .vsock_cid = VMADDR_CID_ANY,
         };
@@ -63,8 +64,6 @@ int machine_new(MachineClass class, const char *name, Machine **ret) {
                         return -ENOMEM;
         }
 
-        m->class = class;
-
         *ret = TAKE_PTR(m);
         return 0;
 }
index 944b52efd4b8b354dae8d1ab0f22e59d9259303a..a4ebaf5d20a6964bd09b7334370be660537cc6a9 100644 (file)
@@ -1497,7 +1497,7 @@ int manager_get_machine_by_pid(Manager *m, pid_t pid, Machine **machine) {
         return 1;
 }
 
-int manager_add_machine(Manager *m, const char *name, Machine **_machine) {
+int manager_add_machine(Manager *m, const char *name, Machine **ret) {
         Machine *machine;
         int r;
 
@@ -1511,12 +1511,14 @@ int manager_add_machine(Manager *m, const char *name, Machine **_machine) {
                         return r;
 
                 r = machine_link(m, machine);
-                if (r < 0)
-                        return 0;
+                if (r < 0) {
+                        machine_free(machine);
+                        return r;
+                }
         }
 
-        if (_machine)
-                *_machine = machine;
+        if (ret)
+                *ret = machine;
 
         return 0;
 }
index 67abed0fd67e2523b6df1d51b2680aff9fcb16b2..3f1445f73518d7cc4f7fea93e816f12686c3d9e5 100644 (file)
@@ -44,7 +44,7 @@ struct Manager {
         VarlinkServer *varlink_machine_server;
 };
 
-int manager_add_machine(Manager *m, const char *name, Machine **_machine);
+int manager_add_machine(Manager *m, const char *name, Machine **ret);
 int manager_get_machine_by_pid(Manager *m, pid_t pid, Machine **machine);
 
 extern const BusObjectImplementation manager_object;