From b983689de85382034d9280662702c916e18c560f Mon Sep 17 00:00:00 2001 From: Jon Palmisciano Date: Wed, 16 Feb 2022 18:32:33 -0500 Subject: [PATCH] Catch exceptions during analysis, info handling Resolves: https://github.com/jonpalmisc/ObjectiveNinja/issues/36 --- Plugin/Commands.cpp | 11 ++++++++--- Plugin/Workflow/Workflow.cpp | 11 ++++++++--- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/Plugin/Commands.cpp b/Plugin/Commands.cpp index 8c30cf4..10708f7 100644 --- a/Plugin/Commands.cpp +++ b/Plugin/Commands.cpp @@ -28,12 +28,17 @@ void Commands::analyzeStructures(BinaryViewRef bv) return; } + SharedAnalysisInfo info; CustomTypes::defineAll(bv); - auto file = std::make_shared(bv); - auto info = ObjectiveNinja::AnalysisProvider::infoForFile(file); + try { + auto file = std::make_shared(bv); + info = ObjectiveNinja::AnalysisProvider::infoForFile(file); - InfoHandler::applyInfoToView(info, bv); + InfoHandler::applyInfoToView(info, bv); + } catch (...) { + BinaryNinja::LogError("[Objective Ninja]: Error during analysis. Please report this bug!"); + } GlobalState::setFlag(bv, Flag::DidRunWorkflow); } diff --git a/Plugin/Workflow/Workflow.cpp b/Plugin/Workflow/Workflow.cpp index 53a24db..dcc9453 100644 --- a/Plugin/Workflow/Workflow.cpp +++ b/Plugin/Workflow/Workflow.cpp @@ -144,12 +144,17 @@ void Workflow::inlineMethodCalls(AnalysisContextRef ac) std::scoped_lock lock(g_initialAnalysisMutex); if (!GlobalState::hasAnalysisInfo(bv)) { + SharedAnalysisInfo info; CustomTypes::defineAll(bv); - auto file = std::make_shared(bv); - auto info = ObjectiveNinja::AnalysisProvider::infoForFile(file); + try { + auto file = std::make_shared(bv); + info = ObjectiveNinja::AnalysisProvider::infoForFile(file); - InfoHandler::applyInfoToView(info, bv); + InfoHandler::applyInfoToView(info, bv); + } catch (...) { + BinaryNinja::LogError("[Objective Ninja]: Error during analysis. Please report this bug!"); + } GlobalState::setFlag(bv, Flag::DidRunStructureAnalysis); GlobalState::storeAnalysisInfo(bv, info);