Module: wine Branch: master Commit: e62fdaf0f1fa08e82f54b72ce6ae4dabaac8e507 URL: http://source.winehq.org/git/wine.git/?a=commit;h=e62fdaf0f1fa08e82f54b72ce6...
Author: Hans Leidekker hans@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;