(Cc'ing QAPI maintainer) On 24/11/23 02:53, Daniel Hoffman wrote:
This was the only failure preventing `make check` from passing with sanitizers enabled on my configuration.
IIUC this is due to visit_start_list() which expects a NULL list, see qapi/qapi-visit-core.c: bool visit_start_list(Visitor *v, const char *name, GenericList **list, size_t size, Error **errp) { bool ok; assert(!list || size >= sizeof(GenericList)); which is well defined in its declaration: /* * Start visiting a list. * * @name expresses the relationship of this list to its parent * container; see the general description of @name above. * * @list must be non-NULL for a real walk, in which case @size * determines how much memory an input or clone visitor will allocate * into *@list (at least sizeof(GenericList)). Some visitors also * allow @list to be NULL for a virtual walk, in which case @size is * ignored. ... With the patch description improved: Reviewed-by: Philippe Mathieu-Daudé <phi...@linaro.org>
Signed-off-by: Daniel Hoffman <dhoff...@gmail.com> --- hw/core/qdev-properties.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c index 91632f7be9f..4caa78b7bc5 100644 --- a/hw/core/qdev-properties.c +++ b/hw/core/qdev-properties.c @@ -690,7 +690,7 @@ static void get_prop_array(Object *obj, Visitor *v, const char *name, uint32_t *alenptr = object_field_prop_ptr(obj, prop); void **arrayptr = (void *)obj + prop->arrayoffset; char *elem = *arrayptr; - GenericList *list; + GenericList *list = NULL; const size_t list_elem_size = sizeof(*list) + prop->arrayfieldsize; int i; bool ok;