On 4/22/19 9:17 PM, Eric Blake wrote: > On 4/22/19 7:50 PM, Eric Blake wrote: >> Time to enhance the nbd plugin to request structured replies from the >> server. For now, deal only with structured reads. The server can now >> return sparse reads, even though we need nbdkit version 3 before we >> can in turn return sparse reads back to the client. >>
>> + if (rep.structured.length) {
>> + /* Special case for OFFSET_DATA in order to read tail of chunk
>> + directly into final buffer later on */
>> + len = (rep.structured.type == NBD_REPLY_TYPE_OFFSET_DATA &&
>> + rep.structured.length > sizeof offset) ? sizeof offset :
>> + rep.structured.length;
>> + buf = malloc (len);
> ...
>
>> + case NBD_REPLY_TYPE_OFFSET_DATA:
>> + if (rep.structured.length <= sizeof offset) {
>> + nbdkit_error ("structured reply OFFSET_DATA too small");
>> + free (buf);
>> + return nbd_mark_dead (h);
>> + }
>> + memcpy (&offset, buf, sizeof offset);
>> + offset = be64toh (offset);
>> + len = rep.structured.length - sizeof offset;
>> + break;
>
> leaks buf
These leaks would be a lot easier to avoid if we promote CLEANUP_FREE
out of server/internal.h into common/ for use by all filters and in-tree
plugins. Maybe I'll tackle that first (I've got it cleaned locally by
adding more free(buf) calls as appropriate, but without CLEANUP_FREE, it
gets even hairier when I also want to allocate something for .extents
handling that needs freeing in just as many places).
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Libguestfs mailing list [email protected] https://www.redhat.com/mailman/listinfo/libguestfs
