From c021a100bad30219de5011cad6264a6289418005 Mon Sep 17 00:00:00 2001 From: Mason Reed Date: Sun, 11 Aug 2024 09:43:39 -0700 Subject: Fix crash in triage view when opening with no default calling convention --- examples/triage/analysisinfo.cpp | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) (limited to 'examples/triage/analysisinfo.cpp') diff --git a/examples/triage/analysisinfo.cpp b/examples/triage/analysisinfo.cpp index 3719fcbe..cd18e242 100644 --- a/examples/triage/analysisinfo.cpp +++ b/examples/triage/analysisinfo.cpp @@ -56,24 +56,26 @@ void AnalysisInfoWidget::timerExpired() void AnalysisInfoWidget::updateDisplay() { auto defaultPlatform = m_data->GetDefaultPlatform(); - if (!defaultPlatform) - return; - auto callingConvention = defaultPlatform->GetDefaultCallingConvention(); - auto gpRegister = callingConvention->GetGlobalPointerRegister(); - std::string gpString, gpExtraString; - if (gpRegister == BN_INVALID_REGISTER) - { - gpString = "N/A"; - } - else + if (defaultPlatform) { - auto gpValue = m_data->GetGlobalPointerValue(); - gpString = getStringForRegisterValue(m_data->GetDefaultArchitecture(), gpValue); - gpExtraString = std::string(" @ ") + m_data->GetDefaultArchitecture()->GetRegisterName(gpRegister); - if (m_data->UserGlobalPointerValueSet()) - gpExtraString += " (*)"; + auto callingConvention = defaultPlatform->GetDefaultCallingConvention(); + if (callingConvention) + { + auto gpRegister = callingConvention->GetGlobalPointerRegister(); + if (gpRegister != BN_INVALID_REGISTER) + { + auto gpValue = m_data->GetGlobalPointerValue(); + std::string gpString = getStringForRegisterValue(m_data->GetDefaultArchitecture(), gpValue); + std::string gpExtraString = std::string(" @ ") + m_data->GetDefaultArchitecture()->GetRegisterName(gpRegister); + if (m_data->UserGlobalPointerValueSet()) + gpExtraString += " (*)"; + + m_gpLabel->setText(QString::fromStdString(gpString)); + m_gpExtraLabel->setText(QString::fromStdString(gpExtraString)); + return; + } + } } - m_gpLabel->setText(QString::fromStdString(gpString)); - m_gpExtraLabel->setText(QString::fromStdString(gpExtraString)); + m_gpLabel->setText("N/A"); } -- cgit v1.3.1