- fix multiple bugs in mydocuments shellfolder:

- zero initialize buffer
- check return value of SHGetSpecialFolderPathW
- zeroize buffer in ISF_MyDocuments_fnGetDisplayNameOf


svn path=/trunk/; revision=34678
This commit is contained in:
Johannes Anderwald 2008-07-22 11:20:01 +00:00
parent 70b9b15c69
commit c18f0a3fb9

View file

@ -235,17 +235,17 @@ WINAPI ISF_MyDocuments_fnParseDisplayName (IShellFolder2 * iface,
}
/**************************************************************************
* CreateDesktopEnumList()
* CreateMyDocumentsEnumList()
*/
static BOOL CreateDesktopEnumList(IEnumIDList *list, DWORD dwFlags)
static BOOL CreateMyDocumentsEnumList(IEnumIDList *list, DWORD dwFlags)
{
BOOL ret = TRUE;
WCHAR szPath[MAX_PATH];
WCHAR szPath[MAX_PATH] = {0};
TRACE("(%p)->(flags=0x%08x)\n", list, dwFlags);
/* enumerate the elements in %windir%\desktop */
SHGetSpecialFolderPathW(0, szPath, CSIDL_MYDOCUMENTS, FALSE);
ret = SHGetSpecialFolderPathW(0, szPath, CSIDL_PERSONAL, FALSE);
ret = ret && CreateFolderEnumList(list, szPath, dwFlags);
return ret;
@ -264,7 +264,7 @@ static HRESULT WINAPI ISF_MyDocuments_fnEnumObjects (IShellFolder2 * iface,
*ppEnumIDList = IEnumIDList_Constructor();
if (*ppEnumIDList)
CreateDesktopEnumList(*ppEnumIDList, dwFlags);
CreateMyDocumentsEnumList(*ppEnumIDList, dwFlags);
TRACE ("-- (%p)->(new ID List: %p)\n", This, *ppEnumIDList);
@ -500,6 +500,8 @@ WINAPI ISF_MyDocuments_fnGetDisplayNameOf (IShellFolder2 * iface,
if (!pszPath)
return E_OUTOFMEMORY;
ZeroMemory(pszPath, (MAX_PATH +1) * sizeof(WCHAR));
if (_ILIsMyDocuments (pidl))
{
if ((GET_SHGDN_RELATION (dwFlags) == SHGDN_NORMAL) &&