]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
machined: fix bogus error check for machine_link()
authorMike Yuan <me@yhndnzj.com>
Fri, 20 Sep 2024 21:58:14 +0000 (23:58 +0200)
committerMike Yuan <me@yhndnzj.com>
Fri, 20 Sep 2024 22:18:41 +0000 (00:18 +0200)
src/machine/machine.c
src/machine/machined-dbus.c
src/machine/machined.h

index 518eabed107df1e81763f2482c2ede9486044fac..91e0e6be3dd45f58284cec0922d825c63a9d99f9 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 58997e6ec1c4452d6fbdc86eda178adda44bcb4d..97a8a67236bd02c7f81dc2118c5257cca0197cba 100644 (file)
@@ -1487,7 +1487,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;
 
@@ -1501,12 +1501,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 4dbb083e8a5cdcee84d497cea9660ac290b179b4..3dffcb9fe007f3ebe8a1f47e209604498781cc80 100644 (file)
@@ -42,7 +42,7 @@ struct Manager {
         sd_varlink_server *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;