From b1348b6c8068cb7d19a13597f8cd5d6213bf7fde Mon Sep 17 00:00:00 2001 From: SChernykh <15806605+SChernykh@users.noreply.github.com> Date: Fri, 1 Aug 2025 13:45:29 +0200 Subject: [PATCH] Fixed asan error (use after poison) --- src/merge_mining_client_tari.cpp | 4 ++-- src/merge_mining_client_tari.h | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/merge_mining_client_tari.cpp b/src/merge_mining_client_tari.cpp index 5123f48..1b93320 100644 --- a/src/merge_mining_client_tari.cpp +++ b/src/merge_mining_client_tari.cpp @@ -891,13 +891,13 @@ MergeMiningClientTari::TariClient::TariClient() m_buf[0] = '\0'; } -void MergeMiningClientTari::TariClient::reset() +void MergeMiningClientTari::TariClient::break_pairing() { if (is_paired()) { m_pairedClient->m_pairedClient = nullptr; m_pairedClient->close(); - m_pairedClient = nullptr; } + m_pairedClient = nullptr; m_pairedClientSavedResetCounter = std::numeric_limits::max(); } diff --git a/src/merge_mining_client_tari.h b/src/merge_mining_client_tari.h index e29db11..b383482 100644 --- a/src/merge_mining_client_tari.h +++ b/src/merge_mining_client_tari.h @@ -113,15 +113,18 @@ private: static Client* allocate() { return new TariClient(); } virtual size_t size() const override { return sizeof(TariClient); } - void reset() override; + void reset() override { break_pairing(); } [[nodiscard]] bool on_connect() override; [[nodiscard]] bool on_read(const char* data, uint32_t size) override; + void on_disconnected() override { break_pairing(); } alignas(8) char m_buf[BUF_SIZE]; std::vector m_pendingData; bool is_paired() const { return m_pairedClient && (m_pairedClient->m_resetCounter == m_pairedClientSavedResetCounter); } + void break_pairing(); + TariClient* m_pairedClient; uint32_t m_pairedClientSavedResetCounter; };