diff --git a/src/utils/common.c b/src/utils/common.c index bf326cdb6..207d4778c 100644 --- a/src/utils/common.c +++ b/src/utils/common.c @@ -400,7 +400,7 @@ size_t printf_decode(u8 *buf, size_t maxlen, const char *str) int val; while (*pos) { - if (len == maxlen) + if (len + 1 >= maxlen) break; switch (*pos) { case '\\': @@ -468,6 +468,8 @@ size_t printf_decode(u8 *buf, size_t maxlen, const char *str) break; } } + if (maxlen > len) + buf[len] = '\0'; return len; }