diff options
author | Ariel Constenla-Haile <arielch@apache.org> | 2013-10-25 12:49:16 +0000 |
---|---|---|
committer | Ariel Constenla-Haile <arielch@apache.org> | 2013-10-25 12:49:16 +0000 |
commit | 3b16c98449d120b07ca4f2f312e31127ac655482 (patch) | |
tree | 9ff05eea9c0aa665db068554f6c43fa9d9e8dc02 /fpicker | |
parent | 163c0e0ad7857ca3f290d4e5d52e2cbf3b39db44 (diff) |
i123544 - Prevent accessing empty filters' vector
Notes
Notes:
merged as: 4089083f32a22e7f308b82b9e8dc4a4abaee8b24
Diffstat (limited to 'fpicker')
-rw-r--r-- | fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx b/fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx index f44ba31780f5..42ebb619bc14 100644 --- a/fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx +++ b/fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx @@ -915,15 +915,18 @@ void VistaFilePickerImpl::impl_sta_ShowDialogModal(const RequestRef& rRequest) ::rtl::OUString aExt; UINT nFileType; hResult = iDialog->GetFileTypeIndex(&nFileType); - if ( SUCCEEDED(hResult) ) + if ( SUCCEEDED(hResult) && nFileType > 0 ) { ::sal_Int32 nRealIndex = (nFileType-1); // COM dialog base on 1 ... filter container on 0 .-) ::std::vector< COMDLG_FILTERSPEC > lFilters = lcl_buildFilterList(m_lFilters); - LPCWSTR lpFilterExt = lFilters[nRealIndex].pszSpec; + if ( nRealIndex < lFilters.size() ) + { + LPCWSTR lpFilterExt = lFilters[nRealIndex].pszSpec; - lpFilterExt = wcsrchr( lpFilterExt, '.' ); - if ( lpFilterExt ) - aFileURL += reinterpret_cast<const sal_Unicode*>(lpFilterExt); + lpFilterExt = wcsrchr( lpFilterExt, '.' ); + if ( lpFilterExt ) + aFileURL += reinterpret_cast<const sal_Unicode*>(lpFilterExt); + } } } |