embeddedobj/source/msole/olecomponent.cxx | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-)
New commits: commit dafcb32f09c3acea8e2fa12e1d39261b13c740db Author: Caolán McNamara <[email protected]> Date: Thu Sep 22 21:11:56 2016 +0100 Resolves: tdf#101971 OleLoad under structured exception guards sample pptx crashes down in the depths of (apparently pre-installed on 32bit Windows 10) Flash.ocx Change-Id: I4e083d492e56e72df47b2c172d7f07f0e39b82ea Reviewed-on: https://gerrit.libreoffice.org/29199 Reviewed-by: Stephan Bergmann <[email protected]> Tested-by: Stephan Bergmann <[email protected]> (cherry picked from commit 373b44a2fcbe78e8a3ff14cd410826af151a6adf) Reviewed-on: https://gerrit.libreoffice.org/29213 Tested-by: Jenkins <[email protected]> Reviewed-by: Michael Stahl <[email protected]> diff --git a/embeddedobj/source/msole/olecomponent.cxx b/embeddedobj/source/msole/olecomponent.cxx index 6a7b9e4..2f59f35 100644 --- a/embeddedobj/source/msole/olecomponent.cxx +++ b/embeddedobj/source/msole/olecomponent.cxx @@ -715,6 +715,19 @@ sal_Bool OleComponent::InitializeObject_Impl() return sal_True; } +namespace +{ + HRESULT OleLoadSeh(LPSTORAGE pIStorage, LPVOID* ppObj) + { + HRESULT hr = E_FAIL; + __try { + hr = OleLoad(pIStorage, IID_IUnknown, NULL, ppObj); + } __except( EXCEPTION_EXECUTE_HANDLER ) { + return E_FAIL; + } + return hr; + } +} void OleComponent::LoadEmbeddedObject( const OUString& aTempURL ) { @@ -730,7 +743,7 @@ void OleComponent::LoadEmbeddedObject( const OUString& aTempURL ) if ( FAILED( hr ) || !m_pNativeImpl->m_pIStorage ) throw io::IOException(); // TODO: transport error code? - hr = OleLoad( m_pNativeImpl->m_pIStorage, IID_IUnknown, NULL, (void**)&m_pNativeImpl->m_pObj ); + hr = OleLoadSeh(m_pNativeImpl->m_pIStorage, (void**)&m_pNativeImpl->m_pObj); if ( FAILED( hr ) || !m_pNativeImpl->m_pObj ) { throw uno::RuntimeException(); @@ -963,7 +976,7 @@ void OleComponent::InitEmbeddedCopyOfLink( OleComponent* pOleLinkComponent ) { hr = pObjectStorage->CopyTo( 0, NULL, NULL, m_pNativeImpl->m_pIStorage ); if ( SUCCEEDED( hr ) ) - hr = OleLoad( m_pNativeImpl->m_pIStorage, IID_IUnknown, NULL, (void**)&m_pNativeImpl->m_pObj ); + hr = OleLoadSeh(m_pNativeImpl->m_pIStorage, (void**)&m_pNativeImpl->m_pObj); } } }
_______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
