[PATCH] WinHttpQueryHeaders: set_last_error( ERROR_INSUFFICIENT_BUFFER )

Mikko Rasa tdb at tdb.fi
Fri Aug 20 00:07:32 CDT 2010


Make sure this is done in all cases
---
 dlls/winhttp/request.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/dlls/winhttp/request.c b/dlls/winhttp/request.c
index 7c1205c..54f92e4 100644
--- a/dlls/winhttp/request.c
+++ b/dlls/winhttp/request.c
@@ -655,7 +655,7 @@ static BOOL query_headers( request_t *request, DWORD level, LPCWSTR name, LPVOID
     case WINHTTP_QUERY_VERSION:
     {
         DWORD len = (strlenW( request->version ) + 1) * sizeof(WCHAR);
-        if (len > *buflen)
+        if (len > *buflen || !buffer)
         {
             set_last_error( ERROR_INSUFFICIENT_BUFFER );
             *buflen = len;
@@ -673,7 +673,7 @@ static BOOL query_headers( request_t *request, DWORD level, LPCWSTR name, LPVOID
     case WINHTTP_QUERY_STATUS_TEXT:
     {
         DWORD len = (strlenW( request->status_text ) + 1) * sizeof(WCHAR);
-        if (len > *buflen)
+        if (len > *buflen || !buffer)
         {
             set_last_error( ERROR_INSUFFICIENT_BUFFER );
             *buflen = len;
@@ -713,7 +713,7 @@ static BOOL query_headers( request_t *request, DWORD level, LPCWSTR name, LPVOID
     if (level & WINHTTP_QUERY_FLAG_NUMBER)
     {
         int *number = buffer;
-        if (sizeof(int) > *buflen)
+        if (sizeof(int) > *buflen || !buffer)
         {
             set_last_error( ERROR_INSUFFICIENT_BUFFER );
         }
@@ -728,7 +728,7 @@ static BOOL query_headers( request_t *request, DWORD level, LPCWSTR name, LPVOID
     else if (level & WINHTTP_QUERY_FLAG_SYSTEMTIME)
     {
         SYSTEMTIME *st = buffer;
-        if (sizeof(SYSTEMTIME) > *buflen)
+        if (sizeof(SYSTEMTIME) > *buflen || !buffer)
         {
             set_last_error( ERROR_INSUFFICIENT_BUFFER );
         }
@@ -744,7 +744,7 @@ static BOOL query_headers( request_t *request, DWORD level, LPCWSTR name, LPVOID
     {
         WCHAR *string = buffer;
         DWORD len = (strlenW( header->value ) + 1) * sizeof(WCHAR);
-        if (len > *buflen)
+        if (len > *buflen || !buffer)
         {
             set_last_error( ERROR_INSUFFICIENT_BUFFER );
             *buflen = len;
-- 
1.7.1




More information about the wine-patches mailing list