Avoid crash in virBufferEscapeString

* src/util/buf.c: if virBufferEscapeString was called on a buffer that
  had 0 bytes of space, a size of -1 will be passed to snprintf, resulting
  in a segmentation fault, this preallocate some space.
This commit is contained in:
Laine Stump 2009-10-15 14:19:11 +02:00 committed by Daniel Veillard
parent e391595890
commit 04e0686262

View File

@ -318,6 +318,12 @@ virBufferEscapeString(const virBufferPtr buf, const char *format, const char *st
}
*out = 0;
if ((buf->use >= buf->size) &&
virBufferGrow(buf, 100) < 0) {
VIR_FREE(escaped);
return;
}
size = buf->size - buf->use - 1;
while (((count = snprintf(&buf->content[buf->use], size, format,
(char *)escaped)) < 0) || (count >= size - 1)) {