- Convert LoadSoundFiles to explictely to unicode

- Fix 2 possible buffer overflows (CID 553)

svn path=/trunk/; revision=37087
This commit is contained in:
Johannes Anderwald 2008-10-30 09:58:12 +00:00
parent bcbb4cf019
commit b645f2b87e

View file

@ -648,35 +648,35 @@ LoadSoundProfiles(HWND hwndDlg)
BOOL BOOL
LoadSoundFiles(HWND hwndDlg) LoadSoundFiles(HWND hwndDlg)
{ {
TCHAR szPath[MAX_PATH]; WCHAR szPath[MAX_PATH];
TCHAR szNone[MAX_PATH]; WCHAR * ptr;
TCHAR * ptr; WIN32_FIND_DATAW FileData;
WIN32_FIND_DATA FileData;
HANDLE hFile; HANDLE hFile;
LRESULT lResult; LRESULT lResult;
UINT length; UINT length;
length = GetWindowsDirectory(szPath, sizeof(szPath) / sizeof(TCHAR)); length = GetWindowsDirectoryW(szPath, MAX_PATH);
if (length == 0 || length > (sizeof(szPath) / sizeof(TCHAR))) if (length == 0 || length >= MAX_PATH - 9)
{ {
return FALSE; return FALSE;
} }
if (szPath[length-1] != _T('\\')) if (szPath[length-1] != L'\\')
{ {
szPath[length] = _T('\\'); szPath[length] = L'\\';
length++; length++;
} }
_tcscpy(&szPath[length], _T("media\\*")); wcscpy(&szPath[length], L"media\\*");
length += 7; length += 7;
hFile = FindFirstFile(szPath, &FileData); hFile = FindFirstFileW(szPath, &FileData);
if (hFile == INVALID_HANDLE_VALUE) if (hFile == INVALID_HANDLE_VALUE)
{ {
return FALSE; return FALSE;
} }
if (LoadString(hApplet, IDS_NO_SOUND, szNone, MAX_PATH)) if (LoadString(hApplet, IDS_NO_SOUND, szPath, MAX_PATH))
{ {
SendDlgItemMessage(hwndDlg, IDC_SOUND_LIST, CB_ADDSTRING, (WPARAM)0, (LPARAM)szNone); szPath[(sizeof(szPath)/sizeof(WCHAR))-1] = L'\0';
SendDlgItemMessageW(hwndDlg, IDC_SOUND_LIST, CB_ADDSTRING, (WPARAM)0, (LPARAM)szPath);
} }
do do
@ -684,7 +684,7 @@ LoadSoundFiles(HWND hwndDlg)
if (FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) if (FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
continue; continue;
ptr = _tcsrchr(FileData.cFileName, _T('\\')); ptr = wcsrchr(FileData.cFileName, L'\\');
if (ptr) if (ptr)
{ {
ptr++; ptr++;
@ -693,13 +693,13 @@ LoadSoundFiles(HWND hwndDlg)
{ {
ptr = FileData.cFileName; ptr = FileData.cFileName;
} }
lResult = SendDlgItemMessage(hwndDlg, IDC_SOUND_LIST, CB_ADDSTRING, (WPARAM)0, (LPARAM)ptr); lResult = SendDlgItemMessageW(hwndDlg, IDC_SOUND_LIST, CB_ADDSTRING, (WPARAM)0, (LPARAM)ptr);
if (lResult != CB_ERR) if (lResult != CB_ERR)
{ {
_tcscpy(&szPath[length-1], FileData.cFileName); wcscpy(&szPath[length-1], FileData.cFileName);
SendDlgItemMessage(hwndDlg, IDC_SOUND_LIST, CB_SETITEMDATA, (WPARAM)lResult, (LPARAM)_tcsdup(szPath)); SendDlgItemMessageW(hwndDlg, IDC_SOUND_LIST, CB_SETITEMDATA, (WPARAM)lResult, (LPARAM)wcsdup(szPath));
} }
}while(FindNextFile(hFile, &FileData) != 0); }while(FindNextFileW(hFile, &FileData) != 0);
FindClose(hFile); FindClose(hFile);
return TRUE; return TRUE;