Skip to content

Commit 972ff20

Browse files
authored
Modify vsnprintf condition checks for size
Updated conditions in vsnprintf checks to include equality. Signed-off-by: vast0906 <vast0906@gmail.com>
1 parent 19cc8f9 commit 972ff20

1 file changed

Lines changed: 5 additions & 4 deletions

File tree

src/flb_sds.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,7 @@ flb_sds_t flb_sds_printf(flb_sds_t *sds, const char *fmt, ...)
363363

364364
va_start(ap, fmt);
365365
size = vsnprintf((char *) (s + flb_sds_len(s)), flb_sds_avail(s), fmt, ap);
366-
if (size > flb_sds_avail(s)) {
366+
if (size >= flb_sds_avail(s)) {
367367
flb_warn("[%s] vsnprintf is insatiable ", __FUNCTION__);
368368
va_end(ap);
369369
return NULL;
@@ -403,13 +403,14 @@ int flb_sds_snprintf(flb_sds_t *str, size_t size, const char *fmt, ...)
403403
retry_snprintf:
404404
va_start(va, fmt);
405405
ret = vsnprintf(*str, size, fmt, va);
406-
if (ret > size) {
407-
tmp = flb_sds_increase(*str, ret-size);
406+
if (ret >= size) {
407+
/* +1 for NUL terminator; vsnprintf writes at most size-1 chars. */
408+
tmp = flb_sds_increase(*str, ret - size + 1);
408409
if (tmp == NULL) {
409410
return -1;
410411
}
411412
*str = tmp;
412-
size = ret;
413+
size = ret + 1;
413414
va_end(va);
414415
goto retry_snprintf;
415416
}

0 commit comments

Comments
 (0)