sfx2/source/appl/appopen.cxx               |    5 +++--
 sfx2/source/doc/objserv.cxx                |    6 +++++-
 sfx2/source/notebookbar/SfxNotebookBar.cxx |   14 +++++++++-----
 3 files changed, 17 insertions(+), 8 deletions(-)

New commits:
commit b18b3b51a7d397a16e85bf8ba83b27193c7cc8c5
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Fri Apr 26 10:20:56 2024 +0100
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Mon Apr 29 15:27:39 2024 +0200

    SfxViewFrame::Current() dereferenced without null check
    
    found with msvc -analyze and _Ret_maybenull_
    
    Change-Id: Ia377822e93448dc61acd1482d34167c35a46836b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166705
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    (cherry picked from commit 95d3e0d478686c7fa84f0bb8c466a1082333a47b)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166830
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/sfx2/source/appl/appopen.cxx b/sfx2/source/appl/appopen.cxx
index 4e1b06e52268..37c67e1ef293 100644
--- a/sfx2/source/appl/appopen.cxx
+++ b/sfx2/source/appl/appopen.cxx
@@ -1044,9 +1044,10 @@ void SfxApplication::OpenDocExec_Impl( SfxRequest& rReq )
     if( aFileName.startsWith("#") ) // Mark without URL
     {
         SfxViewFrame *pView = pTargetFrame ? 
pTargetFrame->GetCurrentViewFrame() : nullptr;
-        if ( !pView )
+        if (!pView)
             pView = SfxViewFrame::Current();
-        pView->GetViewShell()->JumpToMark( aFileName.copy(1) );
+        if (pView)
+            pView->GetViewShell()->JumpToMark( aFileName.copy(1) );
         rReq.SetReturnValue( SfxViewFrameItem( pView ) );
         return;
     }
diff --git a/sfx2/source/doc/objserv.cxx b/sfx2/source/doc/objserv.cxx
index fedbfb205d92..90ef2ee232e7 100644
--- a/sfx2/source/doc/objserv.cxx
+++ b/sfx2/source/doc/objserv.cxx
@@ -453,6 +453,10 @@ static void sendErrorToLOK(ErrCodeMsg error)
     if (error.GetCode().GetClass() == ErrCodeClass::NONE)
         return;
 
+    SfxViewShell* pNotifier = SfxViewShell::Current();
+    if (!pNotifier)
+        return;
+
     boost::property_tree::ptree aTree;
     aTree.put("code", error);
     aTree.put("kind", "");
@@ -465,7 +469,7 @@ static void sendErrorToLOK(ErrCodeMsg error)
     std::stringstream aStream;
     boost::property_tree::write_json(aStream, aTree);
 
-    SfxViewShell::Current()->libreOfficeKitViewCallback(LOK_CALLBACK_ERROR, 
OString(aStream.str()));
+    pNotifier->libreOfficeKitViewCallback(LOK_CALLBACK_ERROR, 
OString(aStream.str()));
 }
 
 namespace
diff --git a/sfx2/source/notebookbar/SfxNotebookBar.cxx 
b/sfx2/source/notebookbar/SfxNotebookBar.cxx
index 8e9c2c9ca494..69d41b04d825 100644
--- a/sfx2/source/notebookbar/SfxNotebookBar.cxx
+++ b/sfx2/source/notebookbar/SfxNotebookBar.cxx
@@ -418,6 +418,9 @@ bool SfxNotebookBar::StateMethod(SystemWindow* pSysWindow,
 
             if (bIsLOK)
             {
+                if (!pViewShell)
+                    return false;
+
                 // Notebookbar was loaded too early what caused:
                 //   * in LOK: Paste Special feature was incorrectly 
initialized
                 // Skip first request so Notebookbar will be initialized after 
document was loaded
@@ -608,11 +611,12 @@ void SfxNotebookBar::ToggleMenubar()
 
 void SfxNotebookBar::ReloadNotebookBar(std::u16string_view sUIPath)
 {
-    if (SfxNotebookBar::IsActive())
-    {
-        SfxViewShell* pViewShell = SfxViewShell::Current();
-        
sfx2::SfxNotebookBar::StateMethod(pViewShell->GetViewFrame().GetBindings(), 
sUIPath, true);
-    }
+    if (!SfxNotebookBar::IsActive())
+        return;
+    SfxViewShell* pViewShell = SfxViewShell::Current();
+    if (!pViewShell)
+        return;
+    
sfx2::SfxNotebookBar::StateMethod(pViewShell->GetViewFrame().GetBindings(), 
sUIPath, true);
 }
 
 IMPL_STATIC_LINK(SfxNotebookBar, VclDisposeHdl, const SfxViewShell*, 
pViewShell, void)

Reply via email to