[3/3] wininet: Avoid a crash on NULL lpcszHeader in HttpSendRequestExW.
Hans Leidekker
hans at codeweavers.com
Tue Nov 17 08:59:52 CST 2009
Fixes http://bugs.winehq.org/show_bug.cgi?id=20733
---
dlls/wininet/http.c | 20 ++++++++++++--------
1 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c
index 1426439..3603761 100644
--- a/dlls/wininet/http.c
+++ b/dlls/wininet/http.c
@@ -3338,17 +3338,21 @@ BOOL WINAPI HttpSendRequestExW(HINTERNET hRequest,
req = &workRequest.u.HttpSendRequestW;
if (lpBuffersIn)
{
- DWORD size;
+ DWORD size = 0;
- if (lpBuffersIn->dwHeadersLength == ~0u)
- size = (strlenW( lpBuffersIn->lpcszHeader ) + 1) * sizeof(WCHAR);
- else
- size = lpBuffersIn->dwHeadersLength * sizeof(WCHAR);
+ if (lpBuffersIn->lpcszHeader)
+ {
+ 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->lpszHeader = HeapAlloc( GetProcessHeap(), 0, size );
+ memcpy( req->lpszHeader, lpBuffersIn->lpcszHeader, size );
+ }
+ else req->lpszHeader = NULL;
- req->dwHeaderLength = lpBuffersIn->dwHeadersLength;
+ req->dwHeaderLength = size / sizeof(WCHAR);
req->lpOptional = lpBuffersIn->lpvBuffer;
req->dwOptionalLength = lpBuffersIn->dwBufferLength;
req->dwContentLength = lpBuffersIn->dwBufferTotal;
--
1.6.3.3
More information about the wine-patches
mailing list