From 62b5c738e76678e31c8ae0c1cdee77f7dc290513 Mon Sep 17 00:00:00 2001 From: Philip Withnall Date: Tue, 9 Apr 2024 16:41:28 +0100 Subject: [PATCH] gvariant-serialiser: Add an assertion to help the static analyser MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit scan-build thinks that `gvs_variable_sized_array_is_normal()` can do a `NULL` pointer dereference on `value.data` when `value.size == 0`. This isn’t possible, because `offsets.length == 0` always when `value.size == 0`, but that’s a bit of a complex relationship which the static analyser can’t work out. Give it some help by adding an assertion. Signed-off-by: Philip Withnall Helps: #1767 --- glib/gvariant-serialiser.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/glib/gvariant-serialiser.c b/glib/gvariant-serialiser.c index 9a2975b33..08c2e213f 100644 --- a/glib/gvariant-serialiser.c +++ b/glib/gvariant-serialiser.c @@ -904,6 +904,8 @@ gvs_variable_sized_array_is_normal (GVariantSerialised value) if (value.size != 0 && offsets.length == 0) return FALSE; + g_assert (value.size != 0 || offsets.length == 0); + child.type_info = g_variant_type_info_element (value.type_info); g_variant_type_info_query (child.type_info, &alignment, NULL); child.depth = value.depth + 1;