Eric van Beurden : wininet: Check for failed heap allocations.

Alexandre Julliard julliard at winehq.org
Thu Jun 25 08:13:58 CDT 2009


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

Author: Eric van Beurden <ericvb at transgaming.com>
Date:   Wed Jun 24 13:31:34 2009 -0400

wininet: Check for failed heap allocations.

---

 dlls/wininet/cookie.c |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/dlls/wininet/cookie.c b/dlls/wininet/cookie.c
index dc77b17..c9bcad0 100644
--- a/dlls/wininet/cookie.c
+++ b/dlls/wininet/cookie.c
@@ -453,6 +453,12 @@ static BOOL set_cookie(LPCWSTR domain, LPCWSTR path, LPCWSTR cookie_name, LPCWST
     BOOL expired = FALSE;
 
     value = data = HeapAlloc(GetProcessHeap(), 0, (strlenW(cookie_data) + 1) * sizeof(WCHAR));
+    if (data == NULL)
+    {
+        ERR("could not allocate %zu bytes for the cookie data buffer\n", (strlenW(cookie_data) + 1) * sizeof(WCHAR));
+        return FALSE;
+    }
+
     strcpyW(data,cookie_data);
     memset(&expiry,0,sizeof(expiry));
 
@@ -470,7 +476,15 @@ static BOOL set_cookie(LPCWSTR domain, LPCWSTR path, LPCWSTR cookie_name, LPCWST
         if (!(ptr = strchrW(ptr,';'))) break;
         *ptr++ = 0;
 
+        if (value != data)
+            HeapFree(GetProcessHeap(), 0, value);
         value = HeapAlloc(GetProcessHeap(), 0, (ptr - data) * sizeof(WCHAR));
+        if (value == NULL)
+        {
+            HeapFree(GetProcessHeap(), 0, data);
+            ERR("could not allocate %zu bytes for the cookie value buffer\n", (ptr - data) * sizeof(WCHAR));
+            return FALSE;
+        }
         strcpyW(value, data);
 
         while (*ptr == ' ') ptr++; /* whitespace */




More information about the wine-cvs mailing list