From 47d89febdfa0d3c9fe040825d0c26bafb9f37083 Mon Sep 17 00:00:00 2001 From: Bryan Biedenkapp Date: Tue, 16 Jul 2024 15:04:51 -0400 Subject: [PATCH] fix various valgrind reports; --- src/common/network/FrameQueue.cpp | 2 +- src/common/network/RawFrameQueue.cpp | 2 +- src/common/p25/dfsi/LC.cpp | 35 +++++++++++---------- src/common/p25/lc/LC.cpp | 4 +++ src/fne/network/DiagNetwork.cpp | 3 +- src/fne/network/FNENetwork.cpp | 3 +- src/fne/network/callhandler/TagDMRData.cpp | 9 ++++-- src/fne/network/callhandler/TagNXDNData.cpp | 4 +-- src/fne/network/callhandler/TagP25Data.cpp | 4 +-- src/host/p25/Control.cpp | 7 +++++ 10 files changed, 46 insertions(+), 27 deletions(-) diff --git a/src/common/network/FrameQueue.cpp b/src/common/network/FrameQueue.cpp index ec0fd06f..08ae5d72 100644 --- a/src/common/network/FrameQueue.cpp +++ b/src/common/network/FrameQueue.cpp @@ -134,7 +134,7 @@ bool FrameQueue::write(const uint8_t* message, uint32_t length, uint32_t streamI ret = false; } - delete buffer; + delete[] buffer; return ret; } diff --git a/src/common/network/RawFrameQueue.cpp b/src/common/network/RawFrameQueue.cpp index f2c93d4e..40bf0fe2 100644 --- a/src/common/network/RawFrameQueue.cpp +++ b/src/common/network/RawFrameQueue.cpp @@ -162,7 +162,7 @@ void RawFrameQueue::deleteBuffers() if (buffer != nullptr) { // LogDebug(LOG_NET, "deleting buffer, addr %p len %u", buffer->buffer, buffer->length); if (buffer->buffer != nullptr) { - delete buffer->buffer; + delete[] buffer->buffer; buffer->length = 0; buffer->buffer = nullptr; } diff --git a/src/common/p25/dfsi/LC.cpp b/src/common/p25/dfsi/LC.cpp index 4873a277..2838e192 100644 --- a/src/common/p25/dfsi/LC.cpp +++ b/src/common/p25/dfsi/LC.cpp @@ -58,7 +58,12 @@ LC::LC(const LC& data) : LC() LC::LC(const lc::LC& control, const data::LowSpeedData& lsd) : LC() { + if (m_control != nullptr) + delete m_control; m_control = new lc::LC(control); + + if (m_lsd != nullptr) + delete m_lsd; m_lsd = new data::LowSpeedData(lsd); } @@ -66,16 +71,13 @@ LC::LC(const lc::LC& control, const data::LowSpeedData& lsd) : LC() LC::~LC() { - if (m_control != nullptr) { + if (m_control != nullptr) delete m_control; - } - if (m_lsd != nullptr) { + if (m_lsd != nullptr) delete m_lsd; - } delete[] m_mi; - if (m_rsBuffer != nullptr) { + if (m_rsBuffer != nullptr) delete[] m_rsBuffer; - } } /* Equals operator. */ @@ -113,18 +115,16 @@ bool LC::decodeLDU1(const uint8_t* data, uint8_t* imbe) { case DFSIFrameType::LDU1_VOICE1: { - if (m_control != nullptr) { + if (m_control != nullptr) delete m_control; - } m_control = new lc::LC(); - if (m_lsd != nullptr) { - m_lsd = new data::LowSpeedData(); - } + if (m_lsd != nullptr) + delete m_lsd; + m_lsd = new data::LowSpeedData(); - if (m_rsBuffer != nullptr) { - delete m_rsBuffer; - } + if (m_rsBuffer != nullptr) + delete[] m_rsBuffer; m_rsBuffer = new uint8_t[P25_LDU_LC_FEC_LENGTH_BYTES]; ::memset(m_rsBuffer, 0x00U, P25_LDU_LC_FEC_LENGTH_BYTES); @@ -424,9 +424,8 @@ bool LC::decodeLDU2(const uint8_t* data, uint8_t* imbe) case DFSIFrameType::LDU2_VOICE10: { ::memset(m_mi, 0x00U, MI_LENGTH_BYTES); - if (m_lsd != nullptr) { + if (m_lsd != nullptr) delete m_lsd; - } m_lsd = new data::LowSpeedData(); m_rssi = data[6U]; // RSSI @@ -661,7 +660,11 @@ void LC::copy(const LC& data) m_rssi = data.m_rssi; + if (m_control != nullptr) + delete m_control; m_control = new lc::LC(*data.m_control); + if (m_lsd != nullptr) + delete m_lsd; m_lsd = new data::LowSpeedData(*data.m_lsd); delete[] m_mi; diff --git a/src/common/p25/lc/LC.cpp b/src/common/p25/lc/LC.cpp index 919b1a6d..1bd85186 100644 --- a/src/common/p25/lc/LC.cpp +++ b/src/common/p25/lc/LC.cpp @@ -360,6 +360,8 @@ bool LC::decodeLDU2(const uint8_t* data) m_algId = rs[9U]; // Algorithm ID if (m_algId != ALGO_UNENCRYPT) { + if (m_mi != nullptr) + delete[] m_mi; m_mi = new uint8_t[MI_LENGTH_BYTES]; ::memset(m_mi, 0x00U, MI_LENGTH_BYTES); ::memcpy(m_mi, rs, MI_LENGTH_BYTES); // Message Indicator @@ -371,6 +373,8 @@ bool LC::decodeLDU2(const uint8_t* data) } } else { + if (m_mi != nullptr) + delete[] m_mi; m_mi = new uint8_t[MI_LENGTH_BYTES]; ::memset(m_mi, 0x00U, MI_LENGTH_BYTES); diff --git a/src/fne/network/DiagNetwork.cpp b/src/fne/network/DiagNetwork.cpp index 0ac444fc..50f16dec 100644 --- a/src/fne/network/DiagNetwork.cpp +++ b/src/fne/network/DiagNetwork.cpp @@ -84,6 +84,7 @@ void DiagNetwork::processNetwork() ::memcpy(req->buffer, buffer.get(), length); if (!Thread::runAsThread(m_fneNetwork, threadedNetworkRx, req)) { + delete[] req->buffer; delete req; return; } @@ -310,7 +311,7 @@ void* DiagNetwork::threadedNetworkRx(void* arg) } if (req->buffer != nullptr) - delete req->buffer; + delete[] req->buffer; delete req; } diff --git a/src/fne/network/FNENetwork.cpp b/src/fne/network/FNENetwork.cpp index 55dfefd1..5cc5ab40 100644 --- a/src/fne/network/FNENetwork.cpp +++ b/src/fne/network/FNENetwork.cpp @@ -241,6 +241,7 @@ void FNENetwork::processNetwork() ::memcpy(req->buffer, buffer.get(), length); if (!Thread::runAsThread(this, threadedNetworkRx, req)) { + delete[] req->buffer; delete req; return; } @@ -1170,7 +1171,7 @@ void* FNENetwork::threadedNetworkRx(void* arg) } if (req->buffer != nullptr) - delete req->buffer; + delete[] req->buffer; delete req; } diff --git a/src/fne/network/callhandler/TagDMRData.cpp b/src/fne/network/callhandler/TagDMRData.cpp index 4e2f5bf2..e107fe9d 100644 --- a/src/fne/network/callhandler/TagDMRData.cpp +++ b/src/fne/network/callhandler/TagDMRData.cpp @@ -50,7 +50,10 @@ TagDMRData::TagDMRData(FNENetwork* network, bool debug) : /* Finalizes a instance of the TagDMRData class. */ -TagDMRData::~TagDMRData() = default; +TagDMRData::~TagDMRData() +{ + delete m_packetData; +} /* Process a data frame from the network. */ @@ -203,7 +206,7 @@ bool TagDMRData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId if (m_parrotFrames.size() > 0) { for (auto& pkt : m_parrotFrames) { if (pkt.buffer != nullptr) { - delete pkt.buffer; + delete[] pkt.buffer; } } m_parrotFrames.clear(); @@ -410,7 +413,7 @@ void TagDMRData::playbackParrot() } } - delete pkt.buffer; + delete[] pkt.buffer; } Thread::sleep(60); m_parrotFrames.pop_front(); diff --git a/src/fne/network/callhandler/TagNXDNData.cpp b/src/fne/network/callhandler/TagNXDNData.cpp index 0318dc54..c6e32eb7 100644 --- a/src/fne/network/callhandler/TagNXDNData.cpp +++ b/src/fne/network/callhandler/TagNXDNData.cpp @@ -166,7 +166,7 @@ bool TagNXDNData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerI if (m_parrotFrames.size() > 0) { for (auto& pkt : m_parrotFrames) { if (pkt.buffer != nullptr) { - delete pkt.buffer; + delete[] pkt.buffer; } } m_parrotFrames.clear(); @@ -366,7 +366,7 @@ void TagNXDNData::playbackParrot() } } - delete pkt.buffer; + delete[] pkt.buffer; } Thread::sleep(60); m_parrotFrames.pop_front(); diff --git a/src/fne/network/callhandler/TagP25Data.cpp b/src/fne/network/callhandler/TagP25Data.cpp index fa53b2f6..63eb6757 100644 --- a/src/fne/network/callhandler/TagP25Data.cpp +++ b/src/fne/network/callhandler/TagP25Data.cpp @@ -237,7 +237,7 @@ bool TagP25Data::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId if (m_parrotFrames.size() > 0) { for (auto& pkt : m_parrotFrames) { if (pkt.buffer != nullptr) { - delete pkt.buffer; + delete[] pkt.buffer; } } m_parrotFrames.clear(); @@ -492,7 +492,7 @@ void TagP25Data::playbackParrot() } } - delete pkt.buffer; + delete[] pkt.buffer; } Thread::sleep(180); m_parrotFrames.pop_front(); diff --git a/src/host/p25/Control.cpp b/src/host/p25/Control.cpp index e5a1402d..0d31b869 100644 --- a/src/host/p25/Control.cpp +++ b/src/host/p25/Control.cpp @@ -161,6 +161,13 @@ Control::~Control() if (m_data != nullptr) { delete m_data; } + + if (m_llaK != nullptr) { + delete[] m_llaK; + } + delete[] m_llaRS; + delete[] m_llaCRS; + delete[] m_llaKS; } /* Resets the data states for the RF interface. */