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