commit ef15b53cb101c378a905faa759aa95429d2e965d
parent 47a862a9be2e2d58adc7ac6c5bd95bcbed057299
Author: Tim Rühsen <tim.ruehsen@gmx.de>
Date: Sun, 14 Apr 2019 19:48:54 +0200
Fix realloc memleak in compress_buf()
Diffstat:
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git 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);