From bb90e12ea092d177960b6edec52b9768da92d789 Mon Sep 17 00:00:00 2001 From: "Earle F. Philhower, III" Date: Wed, 14 Feb 2018 07:50:26 -0800 Subject: [PATCH] Fix double-free in ESP8266WebServer (#4365) In issue #4350, @mongozmaki found that the web server was accessing a deleted variable in the destructor. Implement his suggested change and move the close() before any freeing. Could also have simply NULL'd out the _currentHeaders member after freeing as well. Fixes issue #4350 --- libraries/ESP8266WebServer/src/ESP8266WebServer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp b/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp index ff7c58dfa..6a624cf92 100644 --- a/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp +++ b/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp @@ -81,6 +81,7 @@ ESP8266WebServer::ESP8266WebServer(int port) } ESP8266WebServer::~ESP8266WebServer() { + close(); if (_currentHeaders) delete[]_currentHeaders; _headerKeysCount = 0; @@ -90,7 +91,6 @@ ESP8266WebServer::~ESP8266WebServer() { delete handler; handler = next; } - close(); } void ESP8266WebServer::begin() {