Hans Leidekker : wininet: Avoid accessing uninitialized memory in HttpSendRequestExW.

Alexandre Julliard julliard at winehq.org
Tue Oct 27 09:46:30 CDT 2009


Module: wine
Branch: master
Commit: e62fdaf0f1fa08e82f54b72ce6ae4dabaac8e507
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=e62fdaf0f1fa08e82f54b72ce6ae4dabaac8e507

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Tue Oct 27 10:03:36 2009 +0100

wininet: Avoid accessing uninitialized memory in HttpSendRequestExW.

Found by valgrind.

---

 dlls/wininet/http.c |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c
index d8db8af..1426439 100644
--- a/dlls/wininet/http.c
+++ b/dlls/wininet/http.c
@@ -3338,8 +3338,16 @@ BOOL WINAPI HttpSendRequestExW(HINTERNET hRequest,
         req = &workRequest.u.HttpSendRequestW;
         if (lpBuffersIn)
         {
-            /* FIXME: this should use dwHeadersLength or may not be necessary at all */
-            req->lpszHeader = heap_strdupW(lpBuffersIn->lpcszHeader);
+            DWORD size;
+
+            if (lpBuffersIn->dwHeadersLength == ~0u)
+                size = (strlenW( lpBuffersIn->lpcszHeader ) + 1) * sizeof(WCHAR);
+            else
+                size = lpBuffersIn->dwHeadersLength * sizeof(WCHAR);
+
+            req->lpszHeader = HeapAlloc( GetProcessHeap(), 0, size );
+            memcpy( req->lpszHeader, lpBuffersIn->lpcszHeader, size );
+
             req->dwHeaderLength = lpBuffersIn->dwHeadersLength;
             req->lpOptional = lpBuffersIn->lpvBuffer;
             req->dwOptionalLength = lpBuffersIn->dwBufferLength;




More information about the wine-cvs mailing list