[libvirt] [PATCH v2] buf: Fix possible infinite loop in EscapeString, VSnprintf

Eric Blake eblake at redhat.com
Wed Sep 1 21:51:44 UTC 2010


On 09/01/2010 03:41 PM, Cole Robinson wrote:
> The current code will go into an infinite loop if the printf generated
> string is>= 1000, AND exactly 1 character smaller than the amount of free
> space in the buffer. When this happens, we are dropped into the loop body,
> but nothing will actually change, because count == (buf->size - buf->use - 1),
> and virBufferGrow returns unchanged if count<  (buf->size - buf->use)
>
> Fix this by removing the '- 1' bit from 'size'. The *nprintf functions handle
> the NULL byte for us anyways, so we shouldn't need to manually accomodate

s/accomodate/accommodate/

> for it.
>
> Here's a bug where we are actually hitting this issue:
> https://bugzilla.redhat.com/show_bug.cgi?id=602772
>
> v2: Eric's improvements: while ->  if (), remove extra va_list variable,
>      make sure we report buffer error if snprintf fails

ACK, with one spelling nit in the commit message.

-- 
Eric Blake   eblake at redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org




More information about the libvir-list mailing list