]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-varlink: fix sd_varlink_collect() with empty replies
authorLennart Poettering <lennart@poettering.net>
Thu, 23 Oct 2025 09:07:16 +0000 (11:07 +0200)
committerLennart Poettering <lennart@poettering.net>
Sat, 1 Nov 2025 20:58:28 +0000 (21:58 +0100)
Follow-up for: 48c64813ec6bdbe536b7a62281292ea5981295ba

src/libsystemd/sd-varlink/sd-varlink.c

index f55112d1c492cd7321b2fca2feb6d539e539e6c1..18b26f657da8b5d080d33dfefdbc285463545e5f 100644 (file)
@@ -2421,6 +2421,15 @@ _public_ int sd_varlink_collect_full(
                         if (sd_json_variant_elements(collected) >= VARLINK_COLLECT_MAX)
                                 return varlink_log_errno(v, SYNTHETIC_ERRNO(E2BIG), "Number of reply messages grew too large (%zu) while collecting.", sd_json_variant_elements(collected));
 
+                        _cleanup_(sd_json_variant_unrefp) sd_json_variant *empty = NULL;
+                        if (!p) {
+                                r = sd_json_variant_new_array(&empty, /* array= */ NULL, /* n= */ 0);
+                                if (r < 0)
+                                        return r;
+
+                                p = empty;
+                        }
+
                         r = sd_json_variant_append_array(&collected, p);
                         if (r < 0)
                                 return varlink_log_errno(v, r, "Failed to append JSON object to array: %m");