Author: janderwald Date: Thu Oct 30 02:59:55 2008 New Revision: 37081
URL: http://svn.reactos.org/svn/reactos?rev=37081&view=rev Log: - 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
Modified: trunk/reactos/dll/win32/shell32/drive.c trunk/reactos/dll/win32/shell32/enumidlist.c trunk/reactos/dll/win32/shell32/shfldr_recyclebin.c
Modified: trunk/reactos/dll/win32/shell32/drive.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/drive.c?r... ============================================================================== --- trunk/reactos/dll/win32/shell32/drive.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/drive.c [iso-8859-1] Thu Oct 30 02:59:55 2008 @@ -678,7 +678,7 @@ PROPSHEETHEADERW psh; BOOL ret; UINT i; - WCHAR szName[MAX_PATH]; + WCHAR szName[MAX_PATH+6]; DWORD dwMaxComponent, dwFileSysFlags; IDataObject * pDataObj = NULL;
@@ -700,8 +700,8 @@ /* FIXME * check if disk is a really a local hdd */ - i = LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, szName, sizeof(szName)/sizeof(WCHAR)); - if (i > 0 && i < (sizeof(szName)/sizeof(WCHAR)) + 6) + i = LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, szName, sizeof(szName)/sizeof(WCHAR)-6); + if (i > 0 && i < (sizeof(szName)/sizeof(WCHAR)) - 6) { szName[i] = L' '; szName[i+1] = L'('; @@ -929,6 +929,8 @@ HWND hDlgCtrl;
Length = GetWindowTextW(hwndDlg, szText, sizeof(szText)/sizeof(WCHAR)); + if (Length < 0) + Length = 0; 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))) {
Modified: trunk/reactos/dll/win32/shell32/enumidlist.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/enumidlis... ============================================================================== --- trunk/reactos/dll/win32/shell32/enumidlist.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/enumidlist.c [iso-8859-1] Thu Oct 30 02:59:55 2008 @@ -97,8 +97,8 @@
while(pCur) { - REFIID curid = _ILGetGUIDPointer(pCur->pidl); - if (IsEqualIID(curid, refid)) + LPGUID curid = _ILGetGUIDPointer(pCur->pidl); + if (curid && IsEqualGUID(curid, refid)) { return TRUE; }
Modified: trunk/reactos/dll/win32/shell32/shfldr_recyclebin.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shfldr_re... ============================================================================== --- trunk/reactos/dll/win32/shell32/shfldr_recyclebin.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/shfldr_recyclebin.c [iso-8859-1] Thu Oct 30 02:59:55 2008 @@ -1218,7 +1218,7 @@ li.iSubItem = 0; li.pszText = szVolume; 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 (StrFormatByteSizeW(TotalNumberOfFreeBytes.QuadPart, szVolume, sizeof(szVolume) / sizeof(WCHAR))) @@ -1383,11 +1383,17 @@ PDRIVE_ITEM_CONTEXT pItem; BOOL bSuccess; UINT uResult; + PROPSHEETPAGE * page; + DWORD dwStyle;
switch(uMsg) { - case WM_INITDIALOG: - InitializeBitBucketDlg(hwndDlg, (WCHAR)lParam); + case WM_INITDIALOG: + 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) { SetFocus(GetDlgItem(hwndDlg, 14000));