sd-json: silence false positive in sd_json_variant_filter

Same pattern as the fix for sd_json_variant_unset_field in
9b3715d529: cache the element
count in a local variable and assert it is at least 2 before
subtracting.

CID#1548029

Follow-up for f2ff34ff2a
This commit is contained in:
Luca Boccassi
2026-03-30 09:37:31 +01:00
parent 4ff8fb899b
commit a702b9b6ea
+4 -2
View File
@@ -1940,7 +1940,7 @@ _public_ int sd_json_variant_filter(sd_json_variant **v, char **to_remove) {
if (strv_isempty(to_remove))
return 0;
for (size_t i = 0; i < sd_json_variant_elements(*v); i += 2) {
for (size_t i = 0, m = sd_json_variant_elements(*v); i < m; i += 2) {
sd_json_variant *p;
p = sd_json_variant_by_index(*v, i);
@@ -1949,7 +1949,9 @@ _public_ int sd_json_variant_filter(sd_json_variant **v, char **to_remove) {
if (strv_contains(to_remove, sd_json_variant_string(p))) {
if (!array) {
array = new(sd_json_variant*, sd_json_variant_elements(*v) - 2);
/* Silence static analyzers */
assert(m >= 2);
array = new(sd_json_variant*, m - 2);
if (!array)
return -ENOMEM;