]> git.proxmox.com Git - mirror_qemu.git/commit
nbd/client: Use smarter assert
authorEric Blake <eblake@redhat.com>
Thu, 8 Jun 2023 13:56:30 +0000 (08:56 -0500)
committerEric Blake <eblake@redhat.com>
Wed, 19 Jul 2023 20:25:27 +0000 (15:25 -0500)
commitf47b6eab8372fef45cdc711c5a904df82de3aecf
treee63e14d38d41ca118eb8a4073809d3fa8600d396
parent414c0cf0e88b8cba1d4f5a6bc32f9796a66b5c26
nbd/client: Use smarter assert

Assigning strlen() to a uint32_t and then asserting that it isn't too
large doesn't catch the case of an input string 4G in length.
Thankfully, the incoming strings can never be that large: if the
export name or query is reflecting a string the client got from the
server, we already guarantee that we dropped the NBD connection if the
server sent more than 32M in a single reply to our NBD_OPT_* request;
if the export name is coming from qemu, nbd_receive_negotiate()
asserted that strlen(info->name) <= NBD_MAX_STRING_SIZE; and
similarly, a query string via x->dirty_bitmap coming from the user was
bounds-checked in either qemu-nbd or by the limitations of QMP.
Still, it doesn't hurt to be more explicit in how we write our
assertions to not have to analyze whether inadvertent wraparound is
possible.

Fixes: 93676c88 ("nbd: Don't send oversize strings", v4.2.0)
Reported-by: Dr. David Alan Gilbert <dave@treblig.org>
Signed-off-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
Message-ID: <20230608135653.2918540-2-eblake@redhat.com>
nbd/client.c