Check vsnprintf() result to prevent calling malloc() with negative size. Check actual malloc() result and terminate asprintf() with documented error code to prevent the use of NULL pointer.
Fixes: e8428a9d8 ("eal/windows: add some basic functions and macros") Signed-off-by: Dmitry Kozlyuk <dmitry.kozl...@gmail.com> --- lib/librte_eal/windows/eal/include/rte_os.h | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) v2 Changes: Check vsnprintf() value before appending place for '\0'. diff --git a/lib/librte_eal/windows/eal/include/rte_os.h b/lib/librte_eal/windows/eal/include/rte_os.h index 9e762617b..c76be1216 100644 --- a/lib/librte_eal/windows/eal/include/rte_os.h +++ b/lib/librte_eal/windows/eal/include/rte_os.h @@ -64,12 +64,15 @@ asprintf(char **buffer, const char *format, ...) va_list arg; va_start(arg, format); - size = vsnprintf(NULL, 0, format, arg) + 1; + size = vsnprintf(NULL, 0, format, arg); va_end(arg); + if (size < 0) + return -1; + size++; *buffer = malloc(size); - if (buffer == NULL) - printf("Cannot allocate memory"); + if (*buffer == NULL) + return -1; va_start(arg, format); ret = vsnprintf(*buffer, size, format, arg); -- 2.25.0