summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2021-08-18 15:04:49 +0200
committerMike Kaganski <mike.kaganski@collabora.com>2021-08-18 19:19:17 +0200
commit719e2f34837ac54ab7d789e782d5924a72c931d3 (patch)
treee49d41b74ffd0f4e69baf1ad360a37773fb65b54 /svx
parentf6a04457b8aa227deb9402e6406ea843fabfcbb0 (diff)
Potential nullptr dereference
SdrOle2Obj::CanUnloadRunningObj dereferences its first argument unconditionally after checking if it's XEmbedPersist2, so for null argument, it will always crash. OTOH, OLEObjCache::UnloadCheckHdl checks if xUnloadObj is null, *after* calling SdrOle2Obj::CanUnloadRunningObj with it. I don't know if it's OK to try to unload objects that don't return a valid XEmbeddedObject, so I decided to live dangerously and keep unloading those. Change-Id: Ib4901cbaf2dcd3ba4ae6fed983c09c10f1efe852 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120633 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'svx')
-rw-r--r--svx/source/svdraw/svdetc.cxx2
1 files changed, 1 insertions, 1 deletions
diff --git a/svx/source/svdraw/svdetc.cxx b/svx/source/svdraw/svdetc.cxx
index 471c0e65ffd9..04219e7a8477 100644
--- a/svx/source/svdraw/svdetc.cxx
+++ b/svx/source/svdraw/svdetc.cxx
@@ -128,7 +128,7 @@ IMPL_LINK_NOARG(OLEObjCache, UnloadCheckHdl, Timer*, void)
// it is important to get object without reinitialization to avoid reentrance
uno::Reference< embed::XEmbeddedObject > xUnloadObj = pUnloadObj->GetObjRef_NoInit();
- bool bUnload = SdrOle2Obj::CanUnloadRunningObj( xUnloadObj, pUnloadObj->GetAspect() );
+ bool bUnload = !xUnloadObj || SdrOle2Obj::CanUnloadRunningObj( xUnloadObj, pUnloadObj->GetAspect() );
// check whether the object can be unloaded before looking for the parent objects
if ( xUnloadObj.is() && bUnload )