From 41f5129d402bcd14ec4d2cde875203ab51076352 Mon Sep 17 00:00:00 2001 From: "Bruce A. Mah" Date: Fri, 7 Jul 2023 11:03:43 -0700 Subject: [PATCH] Fix memory allocation hazard (#1542). Reported by: @someusername123 on GitHub --- src/iperf_api.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/iperf_api.c b/src/iperf_api.c index f2d416214..a95e02418 100644 --- a/src/iperf_api.c +++ b/src/iperf_api.c @@ -2670,6 +2670,7 @@ static cJSON * JSON_read(int fd) { uint32_t hsize, nsize; + size_t strsize; char *str; cJSON *json = NULL; int rc; @@ -2682,7 +2683,9 @@ JSON_read(int fd) if (Nread(fd, (char*) &nsize, sizeof(nsize), Ptcp) >= 0) { hsize = ntohl(nsize); /* Allocate a buffer to hold the JSON */ - str = (char *) calloc(sizeof(char), hsize+1); /* +1 for trailing null */ + strsize = hsize + 1; /* +1 for trailing NULL */ + if (strsize) { + str = (char *) calloc(sizeof(char), strsize); if (str != NULL) { rc = Nread(fd, str, hsize, Ptcp); if (rc >= 0) { @@ -2701,6 +2704,10 @@ JSON_read(int fd) } } free(str); + } + else { + printf("WARNING: Data length overflow\n"); + } } return json; }