]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sysupdated: Vacuum: Fixup dbus type 34491/head
authorAdrian Vovk <adrianvovk@gmail.com>
Mon, 23 Sep 2024 10:55:34 +0000 (12:55 +0200)
committerAdrian Vovk <adrianvovk@gmail.com>
Mon, 23 Sep 2024 10:55:34 +0000 (12:55 +0200)
We were passing a u64 into an argument that needs a u32

src/sysupdate/sysupdated.c

index 542e8ec7b1dbc51a6285ed65fac6a8655da914c4..a54c6bd10cf9455cf79b9ce86048f7fe21cee382 100644 (file)
@@ -1139,9 +1139,12 @@ static int target_method_vacuum_finish(
         v = sd_json_variant_by_key(json, "removed");
         if (!v)
                 return log_sysupdate_bad_json(SYNTHETIC_ERRNO(EPROTO), "vacuum", "Missing key 'removed'");
+        if (!sd_json_variant_is_unsigned(v))
+                return log_sysupdate_bad_json(SYNTHETIC_ERRNO(EPROTO), "vacuum", "Key 'removed' should be an unsigned int");
         instances = sd_json_variant_unsigned(v);
+        assert(instances <= UINT32_MAX);
 
-        return sd_bus_reply_method_return(msg, "u", instances);
+        return sd_bus_reply_method_return(msg, "u", (uint32_t) instances);
 }
 
 static int target_method_vacuum(sd_bus_message *msg, void *userdata, sd_bus_error *error) {