[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: "make check" fails in a clang sanitizer build on "nbd-qemu-allocatio
From: |
Eric Blake |
Subject: |
Re: "make check" fails in a clang sanitizer build on "nbd-qemu-allocation" iotest |
Date: |
Mon, 15 Nov 2021 16:28:43 -0600 |
User-agent: |
NeoMutt/20211029-16-b680fe |
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