- Fix a potential buffer overflow in SH_ShowDriveProperties (CID 589)

- Fix a possible null dereference (CID 495)
- Fix initializing Recycle Bin Property dialog
- Add LVS_EX_FULLROWSELECT style

svn path=/trunk/; revision=37081
This commit is contained in:
Johannes Anderwald 2008-10-30 07:59:55 +00:00
parent 9332dccc8c
commit 6cf62f2a9f
3 changed files with 16 additions and 8 deletions

View file

@ -678,7 +678,7 @@ SH_ShowDriveProperties(WCHAR * drive, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST *
PROPSHEETHEADERW psh; PROPSHEETHEADERW psh;
BOOL ret; BOOL ret;
UINT i; UINT i;
WCHAR szName[MAX_PATH]; WCHAR szName[MAX_PATH+6];
DWORD dwMaxComponent, dwFileSysFlags; DWORD dwMaxComponent, dwFileSysFlags;
IDataObject * pDataObj = NULL; IDataObject * pDataObj = NULL;
@ -700,8 +700,8 @@ SH_ShowDriveProperties(WCHAR * drive, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST *
/* FIXME /* FIXME
* check if disk is a really a local hdd * check if disk is a really a local hdd
*/ */
i = LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, szName, sizeof(szName)/sizeof(WCHAR)); i = LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, szName, sizeof(szName)/sizeof(WCHAR)-6);
if (i > 0 && i < (sizeof(szName)/sizeof(WCHAR)) + 6) if (i > 0 && i < (sizeof(szName)/sizeof(WCHAR)) - 6)
{ {
szName[i] = L' '; szName[i] = L' ';
szName[i+1] = L'('; szName[i+1] = L'(';
@ -929,6 +929,8 @@ InitializeFormatDriveDlg(HWND hwndDlg, PFORMAT_DRIVE_CONTEXT pContext)
HWND hDlgCtrl; HWND hDlgCtrl;
Length = GetWindowTextW(hwndDlg, szText, sizeof(szText)/sizeof(WCHAR)); Length = GetWindowTextW(hwndDlg, szText, sizeof(szText)/sizeof(WCHAR));
if (Length < 0)
Length = 0;
szDrive[0] = pContext->Drive + L'A'; szDrive[0] = pContext->Drive + L'A';
if (GetVolumeInformationW(szDrive, &szText[Length+1], (sizeof(szText)/sizeof(WCHAR))- Length - 2, &dwSerial, &dwMaxComp, &dwFileSys, szFs, sizeof(szFs)/sizeof(WCHAR))) if (GetVolumeInformationW(szDrive, &szText[Length+1], (sizeof(szText)/sizeof(WCHAR))- Length - 2, &dwSerial, &dwMaxComp, &dwFileSys, szFs, sizeof(szFs)/sizeof(WCHAR)))
{ {

View file

@ -97,8 +97,8 @@ BOOL HasItemWithCLSID(IEnumIDList *iface, LPITEMIDLIST pidl)
while(pCur) while(pCur)
{ {
REFIID curid = _ILGetGUIDPointer(pCur->pidl); LPGUID curid = _ILGetGUIDPointer(pCur->pidl);
if (IsEqualIID(curid, refid)) if (curid && IsEqualGUID(curid, refid))
{ {
return TRUE; return TRUE;
} }

View file

@ -1218,7 +1218,7 @@ InitializeBitBucketDlg(HWND hwndDlg, WCHAR DefaultDrive)
li.iSubItem = 0; li.iSubItem = 0;
li.pszText = szVolume; li.pszText = szVolume;
li.iItem = itemCount; li.iItem = itemCount;
(void)SendMessageW(hDlgCtrl, LVM_INSERTCOLUMN, 0, (LPARAM)&li); (void)SendMessageW(hDlgCtrl, LVM_INSERTITEMW, 0, (LPARAM)&li);
if (GetDiskFreeSpaceExW(szDrive, &FreeBytesAvailable , &TotalNumberOfBytes, &TotalNumberOfFreeBytes)) if (GetDiskFreeSpaceExW(szDrive, &FreeBytesAvailable , &TotalNumberOfBytes, &TotalNumberOfFreeBytes))
{ {
if (StrFormatByteSizeW(TotalNumberOfFreeBytes.QuadPart, szVolume, sizeof(szVolume) / sizeof(WCHAR))) if (StrFormatByteSizeW(TotalNumberOfFreeBytes.QuadPart, szVolume, sizeof(szVolume) / sizeof(WCHAR)))
@ -1383,11 +1383,17 @@ BitBucketDlg(
PDRIVE_ITEM_CONTEXT pItem; PDRIVE_ITEM_CONTEXT pItem;
BOOL bSuccess; BOOL bSuccess;
UINT uResult; UINT uResult;
PROPSHEETPAGE * page;
DWORD dwStyle;
switch(uMsg) switch(uMsg)
{ {
case WM_INITDIALOG: case WM_INITDIALOG:
InitializeBitBucketDlg(hwndDlg, (WCHAR)lParam); page = (PROPSHEETPAGE*)lParam;
InitializeBitBucketDlg(hwndDlg, (WCHAR)page->lParam);
dwStyle = (DWORD) SendDlgItemMessage(hwndDlg, 14000, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
dwStyle = dwStyle | LVS_EX_FULLROWSELECT;
SendDlgItemMessage(hwndDlg, 14000, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dwStyle);
if (GetDlgCtrlID((HWND)wParam) != 14000) if (GetDlgCtrlID((HWND)wParam) != 14000)
{ {
SetFocus(GetDlgItem(hwndDlg, 14000)); SetFocus(GetDlgItem(hwndDlg, 14000));