Module: wine Branch: master Commit: 08603e565bca3a64cf70b46b2b8cd8412fda37b7 URL: http://source.winehq.org/git/wine.git/?a=commit;h=08603e565bca3a64cf70b46b2b...
Author: Hans Leidekker hans@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@codeweavers.com Signed-off-by: Alexandre Julliard julliard@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 b2b72c7..3cdb6ab 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 )