Rob Shearman : wininet: Don't crash in GetUrlCacheEntryInfoA/ W if lpdwCacheEntryInfoBufferSize is NULL.

Alexandre Julliard julliard at winehq.org
Thu May 1 06:38:34 CDT 2008


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

Author: Rob Shearman <rob at codeweavers.com>
Date:   Wed Apr 30 15:23:44 2008 +0100

wininet: Don't crash in GetUrlCacheEntryInfoA/W if lpdwCacheEntryInfoBufferSize is NULL.

---

 dlls/wininet/urlcache.c |   46 ++++++++++++++++++++++++++--------------------
 1 files changed, 26 insertions(+), 20 deletions(-)

diff --git a/dlls/wininet/urlcache.c b/dlls/wininet/urlcache.c
index ba16ed2..f34451a 100644
--- a/dlls/wininet/urlcache.c
+++ b/dlls/wininet/urlcache.c
@@ -1526,18 +1526,21 @@ BOOL WINAPI GetUrlCacheEntryInfoA(
     if (pUrlEntry->dwOffsetHeaderInfo)
         TRACE("Header info: %s\n", debugstr_a((LPSTR)pUrlEntry + pUrlEntry->dwOffsetHeaderInfo));
 
-    if (!URLCache_CopyEntry(
-        pContainer,
-        pHeader,
-        lpCacheEntryInfo,
-        lpdwCacheEntryInfoBufferSize,
-        pUrlEntry,
-        FALSE /* ANSI */))
-    {
-        URLCacheContainer_UnlockIndex(pContainer, pHeader);
-        return FALSE;
+    if (lpdwCacheEntryInfoBufferSize)
+    {
+        if (!URLCache_CopyEntry(
+            pContainer,
+            pHeader,
+            lpCacheEntryInfo,
+            lpdwCacheEntryInfoBufferSize,
+            pUrlEntry,
+            FALSE /* ANSI */))
+        {
+            URLCacheContainer_UnlockIndex(pContainer, pHeader);
+            return FALSE;
+        }
+        TRACE("Local File Name: %s\n", debugstr_a(lpCacheEntryInfo->lpszLocalFileName));
     }
-    TRACE("Local File Name: %s\n", debugstr_a(lpCacheEntryInfo->lpszLocalFileName));
 
     URLCacheContainer_UnlockIndex(pContainer, pHeader);
 
@@ -1590,18 +1593,21 @@ BOOL WINAPI GetUrlCacheEntryInfoW(LPCWSTR lpszUrl,
     TRACE("Found URL: %s\n", debugstr_a((LPSTR)pUrlEntry + pUrlEntry->dwOffsetUrl));
     TRACE("Header info: %s\n", debugstr_a((LPSTR)pUrlEntry + pUrlEntry->dwOffsetHeaderInfo));
 
-    if (!URLCache_CopyEntry(
-        pContainer,
-        pHeader,
-        (LPINTERNET_CACHE_ENTRY_INFOA)lpCacheEntryInfo,
-        lpdwCacheEntryInfoBufferSize,
-        pUrlEntry,
-        TRUE /* UNICODE */))
+    if (lpdwCacheEntryInfoBufferSize)
     {
-        URLCacheContainer_UnlockIndex(pContainer, pHeader);
-        return FALSE;
+        if (!URLCache_CopyEntry(
+            pContainer,
+            pHeader,
+            (LPINTERNET_CACHE_ENTRY_INFOA)lpCacheEntryInfo,
+            lpdwCacheEntryInfoBufferSize,
+            pUrlEntry,
+            TRUE /* UNICODE */))
+        {
+            URLCacheContainer_UnlockIndex(pContainer, pHeader);
+            return FALSE;
+        }
+        TRACE("Local File Name: %s\n", debugstr_w(lpCacheEntryInfo->lpszLocalFileName));
     }
-    TRACE("Local File Name: %s\n", debugstr_w(lpCacheEntryInfo->lpszLocalFileName));
 
     URLCacheContainer_UnlockIndex(pContainer, pHeader);
 




More information about the wine-cvs mailing list