]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
machine: lookup_machine_by_name_or_pid() may return 1 on error and it is already...
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 15 Oct 2024 02:20:13 +0000 (11:20 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 15 Oct 2024 05:24:58 +0000 (14:24 +0900)
Follow-ups for 1bd979dddbb6ed3ffe410d78a7ff80cbb1c42a64 and later
commits.

Fixes #34764.

src/machine/machine-varlink.c
src/machine/machined-varlink.c
test/units/TEST-13-NSPAWN.machined.sh

index 8f0e4f93639b565f279eba4a9ebf5d221421c268..3affc5265c2512b95c8d7a7a4f8091aa588a865b 100644 (file)
@@ -236,6 +236,8 @@ int lookup_machine_by_name_or_pid(sd_varlink *link, Manager *manager, const char
         assert(manager);
         assert(ret_machine);
 
+        /* This returns 0 on success, 1 on error and it is replied, and a negative errno otherwise. */
+
         if (machine_name) {
                 r = lookup_machine_by_name(link, manager, machine_name, &machine);
                 if (r == -EINVAL)
@@ -340,7 +342,7 @@ int vl_method_kill(sd_varlink *link, sd_json_variant *parameters, sd_varlink_met
         r = lookup_machine_by_name_or_pid(link, manager, p.machine_name, p.pid, &machine);
         if (r == -ESRCH)
                 return sd_varlink_error(link, "io.systemd.Machine.NoSuchMachine", NULL);
-        if (r < 0)
+        if (r != 0)
                 return r;
 
         if (isempty(p.swhom))
index b43f586587416323b8f60818ce515326af4dff78..bd5dbf7e671072e574eda6e60ce95df77188321e 100644 (file)
@@ -448,7 +448,7 @@ static int vl_method_list(sd_varlink *link, sd_json_variant *parameters, sd_varl
                 r = lookup_machine_by_name_or_pid(link, m, p.machine_name, p.pid, &machine);
                 if (r == -ESRCH)
                         return sd_varlink_error(link, "io.systemd.Machine.NoSuchMachine", NULL);
-                if (r < 0)
+                if (r != 0)
                         return r;
 
                 return list_machine_one(link, machine, /* more= */ false);
@@ -496,7 +496,7 @@ static int lookup_machine_and_call_method(sd_varlink *link, sd_json_variant *par
         r = lookup_machine_by_name_or_pid(link, manager, p.machine_name, p.pid, &machine);
         if (r == -ESRCH)
                 return sd_varlink_error(link, "io.systemd.Machine.NoSuchMachine", NULL);
-        if (r < 0)
+        if (r != 0)
                 return r;
 
         return method(link, parameters, flags, machine);
index 92daf70acf5381dafe6b4cbc30e7e5f14b1d7521..8185e1adc6b4eacc0a2fd9e306fff807b994f794 100755 (executable)
@@ -261,11 +261,11 @@ varlinkctl call /run/systemd/machine/io.systemd.Machine io.systemd.Machine.List
 
 pid=$(varlinkctl call /run/systemd/machine/io.systemd.Machine io.systemd.Machine.List '{"name":"long-running"}' | jq '.leader.pid')
 varlinkctl call /run/systemd/machine/io.systemd.Machine io.systemd.Machine.List '{"name":"long-running"}' >/tmp/expected
-varlinkctl call /run/systemd/machine/io.systemd.Machine io.systemd.Machine.List "{\"pid\":$pid}" >/tmp/got
-diff -u /tmp/expected /tmp/got
-
-varlinkctl call /run/systemd/machine/io.systemd.Machine io.systemd.Machine.List "{\"name\":\"long-running\", \"pid\":$pid}"
+varlinkctl call /run/systemd/machine/io.systemd.Machine io.systemd.Machine.List "{\"pid\":$pid}" | diff /tmp/expected -
+varlinkctl call /run/systemd/machine/io.systemd.Machine io.systemd.Machine.List "{\"name\":\"long-running\", \"pid\":$pid}" | diff /tmp/expected -
 (! varlinkctl call /run/systemd/machine/io.systemd.Machine io.systemd.Machine.List "{\"name\":\"non-existent\", \"pid\":$pid}")
+(! varlinkctl call /run/systemd/machine/io.systemd.Machine io.systemd.Machine.List '{"name":""}')
+(! varlinkctl call /run/systemd/machine/io.systemd.Machine io.systemd.Machine.List '{"name":"ah@??.hmm"}')
 
 # test io.systemd.Machine.Kill
 # sending TRAP signal