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);