mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 08:25:03 +00:00
[SHELL32] Don't hardcode C: drive again (#2777)
- Avoid buffer overrun. - Don't hardcode C: drive. CORE-13235
This commit is contained in:
parent
6c3775f77c
commit
62e59652a0
1 changed files with 21 additions and 11 deletions
|
@ -192,10 +192,12 @@ CRecycleBinEnum::~CRecycleBinEnum()
|
|||
HRESULT WINAPI CRecycleBinEnum::Initialize(DWORD dwFlags)
|
||||
{
|
||||
WCHAR szDrive[8];
|
||||
if (GetEnvironmentVariableW(L"SystemDrive", szDrive, _countof(szDrive)))
|
||||
PathAddBackslashW(szDrive);
|
||||
else
|
||||
StringCbCopyW(szDrive, sizeof(szDrive), L"C:\\");
|
||||
if (!GetEnvironmentVariableW(L"SystemDrive", szDrive, _countof(szDrive) - 1))
|
||||
{
|
||||
ERR("GetEnvironmentVariableW failed\n");
|
||||
return E_FAIL;
|
||||
}
|
||||
PathAddBackslashW(szDrive);
|
||||
|
||||
if (dwFlags & SHCONTF_NONFOLDERS)
|
||||
{
|
||||
|
@ -367,10 +369,12 @@ HRESULT WINAPI CRecycleBinItemContextMenu::InvokeCommand(LPCMINVOKECOMMANDINFO l
|
|||
Context.pFileDetails = _ILGetRecycleStruct(apidl);
|
||||
Context.bFound = FALSE;
|
||||
|
||||
if (GetEnvironmentVariableW(L"SystemDrive", szDrive, _countof(szDrive)))
|
||||
PathAddBackslashW(szDrive);
|
||||
else
|
||||
StringCbCopyW(szDrive, sizeof(szDrive), L"C:\\");
|
||||
if (!GetEnvironmentVariableW(L"SystemDrive", szDrive, _countof(szDrive) - 1))
|
||||
{
|
||||
ERR("GetEnvironmentVariableW failed\n");
|
||||
return E_FAIL;
|
||||
}
|
||||
PathAddBackslashW(szDrive);
|
||||
|
||||
EnumerateRecycleBinW(szDrive, CBSearchRecycleBin, (PVOID)&Context);
|
||||
if (!Context.bFound)
|
||||
|
@ -823,14 +827,20 @@ HRESULT WINAPI CRecycleBin::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi)
|
|||
HRESULT hr;
|
||||
LPSHELLBROWSER lpSB;
|
||||
IShellView * lpSV = NULL;
|
||||
WCHAR szDrive[8];
|
||||
|
||||
TRACE("%p %p verb %p\n", this, lpcmi, lpcmi->lpVerb);
|
||||
|
||||
if (LOWORD(lpcmi->lpVerb) == iIdEmpty)
|
||||
{
|
||||
// FIXME
|
||||
// path & flags
|
||||
hr = SHEmptyRecycleBinW(lpcmi->hwnd, L"C:\\", 0);
|
||||
if (!GetEnvironmentVariableW(L"SystemDrive", szDrive, _countof(szDrive) - 1))
|
||||
{
|
||||
ERR("GetEnvironmentVariableW failed\n");
|
||||
return E_FAIL;
|
||||
}
|
||||
PathAddBackslashW(szDrive);
|
||||
|
||||
hr = SHEmptyRecycleBinW(lpcmi->hwnd, szDrive, 0);
|
||||
TRACE("result %x\n", hr);
|
||||
if (hr != S_OK)
|
||||
return hr;
|
||||
|
|
Loading…
Reference in a new issue