From 7f12fa7de71fb13bcb7e989f08f36e4d8edfb043 Mon Sep 17 00:00:00 2001 From: Brandon Miller Date: Fri, 21 Mar 2025 13:13:11 -0400 Subject: Fix memory leak in base address detection --- examples/triage/baseaddress.cpp | 16 ++++++++++++++++ examples/triage/baseaddress.h | 14 +++++--------- 2 files changed, 21 insertions(+), 9 deletions(-) (limited to 'examples') diff --git a/examples/triage/baseaddress.cpp b/examples/triage/baseaddress.cpp index cb8f5176..436066eb 100644 --- a/examples/triage/baseaddress.cpp +++ b/examples/triage/baseaddress.cpp @@ -29,6 +29,22 @@ string BaseAddressDetectionConfidenceToString(BNBaseAddressDetectionConfidence l } +BaseAddressDetectionThread::BaseAddressDetectionThread(BaseAddressDetectionQtInputs* widgetInputs, + BinaryNinja::Ref bv) +{ + m_inputs = widgetInputs; + m_view = bv; + m_baseDetection = new BinaryNinja::BaseAddressDetection(m_view); +} + + +BaseAddressDetectionThread::~BaseAddressDetectionThread() +{ + if (m_baseDetection) + delete m_baseDetection; +} + + void BaseAddressDetectionThread::run() { BaseAddressDetectionQtResults results; diff --git a/examples/triage/baseaddress.h b/examples/triage/baseaddress.h index ba512ff1..dd7ead32 100644 --- a/examples/triage/baseaddress.h +++ b/examples/triage/baseaddress.h @@ -40,18 +40,14 @@ class BaseAddressDetectionThread : public QThread { Q_OBJECT BinaryNinja::Ref m_view; - BinaryNinja::BaseAddressDetection* m_baseDetection; + BinaryNinja::BaseAddressDetection* m_baseDetection = nullptr; BaseAddressDetectionQtInputs* m_inputs {}; void run() override; public: - BaseAddressDetectionThread(BaseAddressDetectionQtInputs* widgetInputs, BinaryNinja::Ref bv) - { - m_inputs = widgetInputs; - m_view = bv; - m_baseDetection = new BinaryNinja::BaseAddressDetection(m_view); - } - + BaseAddressDetectionThread(BaseAddressDetectionQtInputs* widgetInputs, + BinaryNinja::Ref bv); + ~BaseAddressDetectionThread(); void Abort() { m_baseDetection->Abort(); } bool IsAborted() { return m_baseDetection->IsAborted(); } @@ -89,4 +85,4 @@ class BaseAddressDetectionWidget : public QWidget public: BaseAddressDetectionWidget(QWidget* parent, BinaryNinja::Ref bv); -}; \ No newline at end of file +}; -- cgit v1.3.1