Fix free(): double free detected in tcache

This commit is contained in:
Andy Taylor 2025-09-09 00:26:59 +01:00
parent 28eb0e6200
commit 6f25ab158d
3 changed files with 11 additions and 9 deletions

6
.vscode/settings.json vendored Normal file
View file

@ -0,0 +1,6 @@
{
"files.associations": {
"*.embeddedhtml": "html",
"cstring": "cpp"
}
}

View file

@ -25,20 +25,15 @@
#include <cstring> #include <cstring>
CDStarHeader::CDStarHeader(const unsigned char* header) : CDStarHeader::CDStarHeader(const unsigned char* header) :
m_header(nullptr) m_header()
{ {
assert(header != nullptr); assert(header != nullptr);
m_header = new unsigned char[DSTAR_HEADER_LENGTH_BYTES];
::memcpy(m_header, header, DSTAR_HEADER_LENGTH_BYTES); ::memcpy(m_header, header, DSTAR_HEADER_LENGTH_BYTES);
} }
CDStarHeader::CDStarHeader() : CDStarHeader::CDStarHeader() :
m_header(nullptr) m_header()
{ {
m_header = new unsigned char[DSTAR_HEADER_LENGTH_BYTES];
::memset(m_header, ' ', DSTAR_HEADER_LENGTH_BYTES); ::memset(m_header, ' ', DSTAR_HEADER_LENGTH_BYTES);
m_header[0U] = 0x00U; m_header[0U] = 0x00U;
@ -48,7 +43,6 @@ m_header(nullptr)
CDStarHeader::~CDStarHeader() CDStarHeader::~CDStarHeader()
{ {
delete[] m_header;
} }
CDStarHeader& CDStarHeader::operator=(const CDStarHeader& header) CDStarHeader& CDStarHeader::operator=(const CDStarHeader& header)

View file

@ -19,6 +19,8 @@
#ifndef DStarHeader_H #ifndef DStarHeader_H
#define DStarHeader_H #define DStarHeader_H
#include "DStarDefines.h"
class CDStarHeader { class CDStarHeader {
public: public:
CDStarHeader(const unsigned char* header); CDStarHeader(const unsigned char* header);
@ -52,7 +54,7 @@ public:
CDStarHeader& operator=(const CDStarHeader& header); CDStarHeader& operator=(const CDStarHeader& header);
private: private:
unsigned char* m_header; unsigned char m_header[DSTAR_HEADER_LENGTH_BYTES];
}; };
#endif #endif