libmicrohttpd

HTTP/1.x server C library (MHD 1.x, stable)
Log | Files | Refs | Submodules | README | LICENSE

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:
Msrc/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 @@ -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);