Diff between 64bc96534bfdb4f32e1edff762ea108b68a47880 and db994dacea855c113b0bfe2e7631228818711da8

Changed Files

File Additions Deletions Status
src/shared/ringbuf.c +6 -1 modified

Full Patch

diff --git a/src/shared/ringbuf.c b/src/shared/ringbuf.c
index f9c4376..1add533 100644
--- a/src/shared/ringbuf.c
+++ b/src/shared/ringbuf.c
@@ -235,9 +235,14 @@ int ringbuf_vprintf(struct ringbuf *ringbuf, const char *format, va_list ap)
 		return -1;
 
 	len = vasprintf(&str, format, ap);
-	if (len < 0 || (size_t) len > avail)
+	if (len < 0)
 		return -1;
 
+	if ((size_t) len > avail) {
+		free(str);
+		return -1;
+	}
+
 	/* Determine possible length of string before wrapping */
 	offset = ringbuf->in & (ringbuf->size - 1);
 	end = MIN((size_t) len, ringbuf->size - offset);