From a663f24dd0a6636d34c2bd86f81e6dc55cc1ce48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20R=C3=BChsen?= Date: Sun, 14 Apr 2019 19:48:54 +0200 Subject: [PATCH] Fix realloc memleak in compress_buf() --- src/examples/http_chunked_compression.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/examples/http_chunked_compression.c b/src/examples/http_chunked_compression.c index 36b3e1fd..9e49c131 100644 --- a/src/examples/http_chunked_compression.c +++ b/src/examples/http_chunked_compression.c @@ -41,6 +41,7 @@ compress_buf (z_stream *strm, const void *src, size_t src_size, size_t *offset, unsigned int have; int ret; int flush; + void *tmp_dest; *dest = NULL; *dest_size = 0; do @@ -65,9 +66,14 @@ compress_buf (z_stream *strm, const void *src, size_t src_size, size_t *offset, ret = deflate (strm, flush); have = CHUNK - strm->avail_out; *dest_size += have; - *dest = realloc (*dest, *dest_size); - if (NULL == *dest) - return MHD_NO; + tmp_dest = realloc (*dest, *dest_size); + if (NULL == tmp_dest) + { + free (*dest); + *dest = NULL; + return MHD_NO; + } + *dest = tmp_dest; memcpy ((*dest) + ((*dest_size) - have), tmp, have); } while (0 == strm->avail_out); -- 2.20.1