From 1ea7666c57e7420ae190008d52aeca1587cec8fb Mon Sep 17 00:00:00 2001 From: Rob Shearman Date: Wed, 30 Apr 2008 15:23:44 +0100 Subject: [PATCH] wininet: Don't crash in GetUrlCacheEntryInfoA/W if lpdwCacheEntryInfoBufferSize is NULL. --- dlls/wininet/urlcache.c | 48 +++++++++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/dlls/wininet/urlcache.c b/dlls/wininet/urlcache.c index ba16ed2e708..f34451a1947 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); -- 2.11.4.GIT