From 7325d76cd20412dff782f9c5c8707cc92bf17d1c Mon Sep 17 00:00:00 2001
From: scott snyder <snyder@bnl.gov>
Date: Sun, 8 Nov 2020 05:25:53 +0100
Subject: [PATCH] BTagging: Fix null pointer dereferences.

Fix a couple potential null pointer references caught by the
undefined behavior sanitizer.
---
 .../JetTagAlgs/BTagging/src/BTagLightSecVertexing.cxx       | 6 +++---
 .../JetTagAlgs/BTagging/src/JetSecVertexingAlg.cxx          | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/src/BTagLightSecVertexing.cxx b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/src/BTagLightSecVertexing.cxx
index 9892d62b156..348d906e1d9 100644
--- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/src/BTagLightSecVertexing.cxx
+++ b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/src/BTagLightSecVertexing.cxx
@@ -375,7 +375,7 @@ namespace Analysis {
 
         for (xAOD::JetContainer::const_iterator jetIter = jetContainer->begin(); jetIter != jetContainer->end(); ++jetIter, ++btagIter, ++infoSVIter) {
           const xAOD::Jet& jetToTag = **jetIter;
-          const Trk::VxSecVertexInfo& myVertexInfo = **infoSVIter;
+          const Trk::VxSecVertexInfo* myVertexInfo = *infoSVIter;
 
           const xAOD::TrackParticleContainer* theTrackParticleContainer = nullptr;
 
@@ -422,7 +422,7 @@ namespace Analysis {
           }
 
           if (basename == "SV1") {
-            const Trk::VxSecVKalVertexInfo* myVertexInfoVKal = dynamic_cast<const Trk::VxSecVKalVertexInfo*>(&myVertexInfo);
+            const Trk::VxSecVKalVertexInfo* myVertexInfoVKal = dynamic_cast<const Trk::VxSecVKalVertexInfo*>(myVertexInfo);
 	          ATH_MSG_DEBUG("#BTAG# Found valid VKalVertexInfo information: " << infoCont.key());
 	          StatusCode sc = fillVkalVariables(**jetIter, *btagIter, myVertexInfoVKal, theTrackParticleContainer, basename);
 	          if(sc.isFailure()){
@@ -430,7 +430,7 @@ namespace Analysis {
 	            return sc;
 	          }
           } else if (basename == "JetFitter") {
-            const Trk::VxJetFitterVertexInfo* myVertexInfoJetFitter = dynamic_cast<const Trk::VxJetFitterVertexInfo*>(&myVertexInfo);
+            const Trk::VxJetFitterVertexInfo* myVertexInfoJetFitter = dynamic_cast<const Trk::VxJetFitterVertexInfo*>(myVertexInfo);
             ATH_MSG_DEBUG("#BTAG# Found valid VxJetFitterVertexInfo information: " << infoCont.key());
             StatusCode sc = fillJFVariables(jetToTag, *btagIter, myVertexInfoJetFitter, theTrackParticleContainer, basename);
             if(sc.isFailure()){
diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/src/JetSecVertexingAlg.cxx b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/src/JetSecVertexingAlg.cxx
index 486a60655e3..4a09c4f8d90 100644
--- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/src/JetSecVertexingAlg.cxx
+++ b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/src/JetSecVertexingAlg.cxx
@@ -177,7 +177,7 @@ namespace Analysis {
     Trk::VxSecVertexInfoContainer::const_iterator infoSVIter = h_VxSecVertexInfoName->begin();
     for (xAOD::JetContainer::const_iterator jetIter = h_JetCollectionName->begin(); jetIter != h_JetCollectionName->end(); ++jetIter, ++infoSVIter) {
       const xAOD::Jet& jetToTag = **jetIter;
-      const Trk::VxSecVertexInfo& myVertexInfo = **infoSVIter;
+      const Trk::VxSecVertexInfo* myVertexInfo = *infoSVIter;
       const xAOD::TrackParticleContainer* theTrackParticleContainer = 0;
 
       //Get it from decor jet
@@ -205,7 +205,7 @@ namespace Analysis {
         inputIParticles.push_back(*inputTrackParticle);
       }
 
-      if (const Trk::VxSecVKalVertexInfo* myVertexInfoVKal = dynamic_cast<const Trk::VxSecVKalVertexInfo*>(&myVertexInfo)) {
+      if (const Trk::VxSecVKalVertexInfo* myVertexInfoVKal = dynamic_cast<const Trk::VxSecVKalVertexInfo*>(myVertexInfo)) {
 	      ATH_MSG_DEBUG("#BTAG# Found VKalVertexInfo information");
         if(basename.find("MSV") == 0){
           StatusCode sc = m_MSVvarFactory->createMSVContainer(jetToTag, myVertexInfoVKal, &(*h_BTagSVCollectionName), PrimaryVtx);
@@ -224,7 +224,7 @@ namespace Analysis {
 	          return sc;
 	        }
         }
-      } else if (const Trk::VxJetFitterVertexInfo* myVertexInfoJetFitter = dynamic_cast<const Trk::VxJetFitterVertexInfo*>(&myVertexInfo)) {
+      } else if (const Trk::VxJetFitterVertexInfo* myVertexInfoJetFitter = dynamic_cast<const Trk::VxJetFitterVertexInfo*>(myVertexInfo)) {
         ATH_MSG_DEBUG("#BTAG# Found VxJetFitterVertexInfo information");
         SG::WriteDecorHandle<xAOD::JetContainer,std::vector<ElementLink< xAOD::BTagVertexContainer> > > h_jetSVLinkName(m_jetSVLinkName);
         std::vector< ElementLink< xAOD::BTagVertexContainer > > JFVtxLinks;
-- 
GitLab