test-resv-mem: Fix CID 1523911

Coverity complains about passing "&expected" to "run_range_inverse_array",
which dereferences null "expected". I guess the problem is that the
compare_ranges() loop dereferences 'e' without testing it. However the
loop condition is based on 'ranges' which is garanteed to have
the same length as 'expected' given the g_assert_cmpint() just
before the loop. So the code looks safe to me.

Nevertheless adding a test on expected before the loop to get rid of the
warning.

Fixes: CID 1523901
Signed-off-by: Eric Auger <eric.auger@redhat.com>
Reported-by: Coverity (CID 1523901)
Message-ID: <20231110083654.277345-1-eric.auger@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
Eric Auger 2023-11-10 09:36:54 +01:00 committed by Thomas Huth
parent 00ac955b06
commit 2e990d81d9

View File

@ -44,6 +44,10 @@ static void compare_ranges(const char *prefix, GList *ranges,
print_ranges("out", ranges); print_ranges("out", ranges);
print_ranges("expected", expected); print_ranges("expected", expected);
#endif #endif
if (!expected) {
g_assert_true(!ranges);
return;
}
g_assert_cmpint(g_list_length(ranges), ==, g_list_length(expected)); g_assert_cmpint(g_list_length(ranges), ==, g_list_length(expected));
for (l = ranges, e = expected; l ; l = l->next, e = e->next) { for (l = ranges, e = expected; l ; l = l->next, e = e->next) {
Range *r = (Range *)l->data; Range *r = (Range *)l->data;