On Mon, Nov 15, 2021 at 05:11:54PM +0000, Peter Maydell wrote: > Hi; running a 'make check' on a clang sanitizer build one of > the iotests falls over due to a NULL pointer being passed to > memset(): > > > TEST iotest-qcow2: nbd-qemu-allocation [fail]
> +../../nbd/server.c:1027:16: runtime error: null pointer passed as > argument 1, which is declared to never be null The code in question: if (client->opt == NBD_OPT_LIST_META_CONTEXT && !nb_queries) { /* enable all known contexts */ meta->base_allocation = true; meta->allocation_depth = meta->exp->allocation_depth; memset(meta->bitmaps, 1, meta->exp->nr_export_bitmaps); I suspect what is happening is that meta->bitmaps is NULL when meta->exp->nr_export_bitmaps is 0. It's annoying that clang's sanitizer whines even for a 0-length memset, but a strict reading of POSIX says that we really are in the technically undefined behavior when passing NULL (even with 0 length), so such whiny behavior is permitted. So I'll post a patch. > > Does this look familiar ? First I've heard of it; thanks for alerting me. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org