]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
vmspawn-varlink: treat empty event subscription filter as catch-all
authorChristian Brauner <brauner@kernel.org>
Tue, 21 Apr 2026 22:21:00 +0000 (00:21 +0200)
committerChristian Brauner <brauner@kernel.org>
Fri, 24 Apr 2026 12:39:25 +0000 (14:39 +0200)
A client supplying "filter": [] previously matched no events at all,
because filter is checked with strv_contains() — an unintuitive corner
case. Treat an empty filter strv identically to a NULL filter (deliver
all events) by freeing the empty strv before it lands in the
subscription map. Brings the API closer to least-surprise.

Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
src/vmspawn/vmspawn-varlink.c

index d9beb5bfe3ff73d7af24d3e545d3f3e6f2016f8c..8df234a9bba1e75d920e5213e65fb362ca62dc00 100644 (file)
@@ -159,6 +159,10 @@ static int vl_method_subscribe_events(sd_varlink *link, sd_json_variant *paramet
         if (r != 0)
                 return r;
 
+        /* Treat [] identically to null: deliver all events. */
+        if (strv_isempty(filter))
+                filter = strv_free(filter);
+
         sd_varlink_ref(link);
 
         r = hashmap_ensure_put(&ctx->subscribed, &varlink_subscriber_hash_ops, link, filter);