Hans Leidekker : winhttp: Fix a memory leak in insert_header (Valgrind).

Alexandre Julliard julliard at winehq.org
Thu Jul 20 12:11:31 CDT 2017


Module: wine
Branch: stable
Commit: 1128581e5909134e40544bfbc1479ce706774c2c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=1128581e5909134e40544bfbc1479ce706774c2c

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Fri Mar 24 15:49:19 2017 +0100

winhttp: Fix a memory leak in insert_header (Valgrind).

Signed-off-by: Hans Leidekker <hans at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
(cherry picked from commit 08603e565bca3a64cf70b46b2b8cd8412fda37b7)
Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>

---

 dlls/winhttp/request.c | 26 +++++++++++---------------
 1 file changed, 11 insertions(+), 15 deletions(-)

diff --git a/dlls/winhttp/request.c b/dlls/winhttp/request.c
index e3c0fb4..fc04794 100644
--- a/dlls/winhttp/request.c
+++ b/dlls/winhttp/request.c
@@ -368,25 +368,21 @@ static int get_header_index( request_t *request, LPCWSTR field, int requested_in
 
 static BOOL insert_header( request_t *request, header_t *header )
 {
-    DWORD count;
+    DWORD count = request->num_headers + 1;
     header_t *hdrs;
 
-    count = request->num_headers + 1;
-    if (count > 1)
+    if (request->headers)
         hdrs = heap_realloc_zero( request->headers, sizeof(header_t) * count );
     else
-        hdrs = heap_alloc_zero( sizeof(header_t) * count );
-
-    if (hdrs)
-    {
-        request->headers = hdrs;
-        request->headers[count - 1].field = strdupW( header->field );
-        request->headers[count - 1].value = strdupW( header->value );
-        request->headers[count - 1].is_request = header->is_request;
-        request->num_headers++;
-        return TRUE;
-    }
-    return FALSE;
+        hdrs = heap_alloc_zero( sizeof(header_t) );
+    if (!hdrs) return FALSE;
+
+    request->headers = hdrs;
+    request->headers[count - 1].field = strdupW( header->field );
+    request->headers[count - 1].value = strdupW( header->value );
+    request->headers[count - 1].is_request = header->is_request;
+    request->num_headers = count;
+    return TRUE;
 }
 
 static BOOL delete_header( request_t *request, DWORD index )




More information about the wine-cvs mailing list