Module: wine Branch: master Commit: f0ce72082d90dfeef4c1b8dc3144908c341b6856 URL: http://source.winehq.org/git/wine.git/?a=commit;h=f0ce72082d90dfeef4c1b8dc31...
Author: Eric van Beurden ericvb@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 */