From 44beee2f2cac5d07cc9806a3416fa9af95c34957 Mon Sep 17 00:00:00 2001 From: Rodrigo Garcia Date: Mon, 9 May 2022 09:59:24 -0300 Subject: [PATCH] Fixes DNS Server Memory Leak when deleted (#6707) --- libraries/DNSServer/src/DNSServer.cpp | 16 ++++++++++++++++ libraries/DNSServer/src/DNSServer.h | 1 + 2 files changed, 17 insertions(+) diff --git a/libraries/DNSServer/src/DNSServer.cpp b/libraries/DNSServer/src/DNSServer.cpp index a7f0d15e..3aa7af16 100644 --- a/libraries/DNSServer/src/DNSServer.cpp +++ b/libraries/DNSServer/src/DNSServer.cpp @@ -20,6 +20,22 @@ DNSServer::DNSServer() _port = 0; } +DNSServer::~DNSServer() +{ + if (_dnsHeader) { + free(_dnsHeader); + _dnsHeader = NULL; + } + if (_dnsQuestion) { + free(_dnsQuestion); + _dnsQuestion = NULL; + } + if (_buffer) { + free(_buffer); + _buffer = NULL; + } +} + bool DNSServer::start(const uint16_t &port, const String &domainName, const IPAddress &resolvedIP) { diff --git a/libraries/DNSServer/src/DNSServer.h b/libraries/DNSServer/src/DNSServer.h index f237a4e3..1250f5ce 100644 --- a/libraries/DNSServer/src/DNSServer.h +++ b/libraries/DNSServer/src/DNSServer.h @@ -76,6 +76,7 @@ class DNSServer { public: DNSServer(); + ~DNSServer(); void processNextRequest(); void setErrorReplyCode(const DNSReplyCode &replyCode); void setTTL(const uint32_t &ttl);