]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-json: silence false positive warning by coverity
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 24 Jan 2025 13:53:13 +0000 (22:53 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 24 Jan 2025 20:31:41 +0000 (05:31 +0900)
An object json is a set of key and value pair, hence has its number of
element is multiple of two, and we know at least two elements there.

Follow-up for b6a2df630701de0bcf77850ced213d7fc3d0c4de.
Fixes CID#1590724

src/libsystemd/sd-json/sd-json.c

index 051ab8d69fc77e340357be8fb2268adcb73f2f40..c25a2cdbbcfaff3b733e267c414c3f5bc1222788 100644 (file)
@@ -2142,7 +2142,7 @@ _public_ int sd_json_variant_unset_field(sd_json_variant **v, const char *field)
 
         _cleanup_free_ sd_json_variant **array = NULL;
         size_t k = 0;
-        for (size_t i = 0; i < sd_json_variant_elements(*v); i += 2) {
+        for (size_t i = 0, n = sd_json_variant_elements(*v); i < n; i += 2) {
                 sd_json_variant *p;
 
                 p = sd_json_variant_by_index(*v, i);
@@ -2151,7 +2151,8 @@ _public_ int sd_json_variant_unset_field(sd_json_variant **v, const char *field)
 
                 if (streq(sd_json_variant_string(p), field)) {
                         if (!array) {
-                                array = new(sd_json_variant*, sd_json_variant_elements(*v) - 2);
+                                assert(n >= 2);
+                                array = new(sd_json_variant*, n - 2);
                                 if (!array)
                                         return -ENOMEM;