Another small issue fixed

Regards, Tim
From a663f24dd0a6636d34c2bd86f81e6dc55cc1ce48 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tim=20R=C3=BChsen?= <[email protected]>
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

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to