From 07241dd407a76671a96df7e210e940c651db5399 Mon Sep 17 00:00:00 2001 From: Paulo Cabral Sanz Date: Tue, 12 Jan 2021 18:39:55 -0300 Subject: [PATCH] Avoid UB and abort on nullptr buffer (#7822) * Avoid UB and abort on nullptr buffer * Report OOM on return value --- libraries/Netdump/src/Netdump.cpp | 8 +++++++- libraries/Netdump/src/Netdump.h | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/libraries/Netdump/src/Netdump.cpp b/libraries/Netdump/src/Netdump.cpp index 4d6a9f42d..326f2eaa7 100644 --- a/libraries/Netdump/src/Netdump.cpp +++ b/libraries/Netdump/src/Netdump.cpp @@ -84,12 +84,17 @@ void Netdump::fileDump(File& outfile, const Filter nf) fileDumpProcess(outfile, ndp); }, nf); } -void Netdump::tcpDump(WiFiServer &tcpDumpServer, const Filter nf) +bool Netdump::tcpDump(WiFiServer &tcpDumpServer, const Filter nf) { if (!packetBuffer) { packetBuffer = new (std::nothrow) char[tcpBufferSize]; + + if (!packetBuffer) + { + return false; + } } bufferIndex = 0; @@ -97,6 +102,7 @@ void Netdump::tcpDump(WiFiServer &tcpDumpServer, const Filter nf) { tcpDumpLoop(tcpDumpServer, nf); }); + return true; } void Netdump::capture(int netif_idx, const char* data, size_t len, int out, int success) diff --git a/libraries/Netdump/src/Netdump.h b/libraries/Netdump/src/Netdump.h index 1011a8e95..8ef453288 100644 --- a/libraries/Netdump/src/Netdump.h +++ b/libraries/Netdump/src/Netdump.h @@ -53,7 +53,7 @@ public: void printDump(Print& out, Packet::PacketDetail ndd, const Filter nf = nullptr); void fileDump(File& outfile, const Filter nf = nullptr); - void tcpDump(WiFiServer &tcpDumpServer, const Filter nf = nullptr); + bool tcpDump(WiFiServer &tcpDumpServer, const Filter nf = nullptr); private: