Skip to content

Commit d774f5e

Browse files
authored
Fix error handling in retry_snprintf function
Signed-off-by: vast0906 <vast0906@gmail.com>
1 parent 972ff20 commit d774f5e

1 file changed

Lines changed: 8 additions & 3 deletions

File tree

src/flb_sds.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -403,14 +403,19 @@ 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) {
406+
if (ret < 0) {
407+
va_end(va);
408+
return -1;
409+
}
410+
if ((size_t) ret >= size) {
407411
/* +1 for NUL terminator; vsnprintf writes at most size-1 chars. */
408-
tmp = flb_sds_increase(*str, ret - size + 1);
412+
tmp = flb_sds_increase(*str, (size_t) ret - size + 1);
409413
if (tmp == NULL) {
414+
va_end(va);
410415
return -1;
411416
}
412417
*str = tmp;
413-
size = ret + 1;
418+
size = (size_t) ret + 1;
414419
va_end(va);
415420
goto retry_snprintf;
416421
}

0 commit comments

Comments
 (0)