Eric van Beurden : wininet: Check for bad allocation in HeapReAlloc.

Alexandre Julliard julliard at winehq.org
Fri Jun 5 08:56:52 CDT 2009


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

Author: Eric van Beurden <ericvb at transgaming.com>
Date:   Thu Jun  4 10:52:16 2009 -0400

wininet: Check for bad allocation in HeapReAlloc.

---

 dlls/wininet/http.c |   13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c
index b11ce21..c6873ae 100644
--- a/dlls/wininet/http.c
+++ b/dlls/wininet/http.c
@@ -4160,6 +4160,7 @@ static INT HTTP_GetResponseHeaders(LPWININETHTTPREQW lpwhr, BOOL clear)
     LPWSTR status_code, status_text;
     DWORD cchMaxRawHeaders = 1024;
     LPWSTR lpszRawHeaders = HeapAlloc(GetProcessHeap(), 0, (cchMaxRawHeaders+1)*sizeof(WCHAR));
+    LPWSTR temp;
     DWORD cchRawHeaders = 0;
 
     TRACE("-->\n");
@@ -4213,10 +4214,10 @@ static INT HTTP_GetResponseHeaders(LPWININETHTTPREQW lpwhr, BOOL clear)
 
     /* regenerate raw headers */
     while (cchRawHeaders + buflen + strlenW(szCrLf) > cchMaxRawHeaders)
-    {
         cchMaxRawHeaders *= 2;
-        lpszRawHeaders = HeapReAlloc(GetProcessHeap(), 0, lpszRawHeaders, (cchMaxRawHeaders+1)*sizeof(WCHAR));
-    }
+    temp = HeapReAlloc(GetProcessHeap(), 0, lpszRawHeaders, (cchMaxRawHeaders+1)*sizeof(WCHAR));
+    if (temp == NULL) goto lend;
+    lpszRawHeaders = temp;
     memcpy(lpszRawHeaders+cchRawHeaders, buffer, (buflen-1)*sizeof(WCHAR));
     cchRawHeaders += (buflen-1);
     memcpy(lpszRawHeaders+cchRawHeaders, szCrLf, sizeof(szCrLf));
@@ -4242,10 +4243,10 @@ static INT HTTP_GetResponseHeaders(LPWININETHTTPREQW lpwhr, BOOL clear)
             MultiByteToWideChar( CP_ACP, 0, bufferA, buflen, buffer, MAX_REPLY_LEN );
 
             while (cchRawHeaders + buflen + strlenW(szCrLf) > cchMaxRawHeaders)
-            {
                 cchMaxRawHeaders *= 2;
-                lpszRawHeaders = HeapReAlloc(GetProcessHeap(), 0, lpszRawHeaders, (cchMaxRawHeaders+1)*sizeof(WCHAR));
-            }
+            temp = HeapReAlloc(GetProcessHeap(), 0, lpszRawHeaders, (cchMaxRawHeaders+1)*sizeof(WCHAR));
+            if (temp == NULL) goto lend;
+            lpszRawHeaders = temp;
             memcpy(lpszRawHeaders+cchRawHeaders, buffer, (buflen-1)*sizeof(WCHAR));
             cchRawHeaders += (buflen-1);
             memcpy(lpszRawHeaders+cchRawHeaders, szCrLf, sizeof(szCrLf));




More information about the wine-cvs mailing list