Skip to content

Commit d846311

Browse files
authored
fix(scan): Make sure that we do not leak memory if reading the APs fails (#10312)
As it was written, it was possible to leak the scan result array if esp_wifi_scan_get_ap_records() failed. Change will ensure that the array is deleted in that case.
1 parent 2c4ce95 commit d846311

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

libraries/WiFi/src/WiFiScan.cpp

+5-1
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,11 @@ void WiFiScanClass::_scanDone() {
119119
esp_wifi_scan_get_ap_num(&(WiFiScanClass::_scanCount));
120120
if (WiFiScanClass::_scanCount) {
121121
WiFiScanClass::_scanResult = new wifi_ap_record_t[WiFiScanClass::_scanCount];
122-
if (!WiFiScanClass::_scanResult || esp_wifi_scan_get_ap_records(&(WiFiScanClass::_scanCount), (wifi_ap_record_t *)_scanResult) != ESP_OK) {
122+
if (!WiFiScanClass::_scanResult) {
123+
WiFiScanClass::_scanCount = 0;
124+
} else if (esp_wifi_scan_get_ap_records(&(WiFiScanClass::_scanCount), (wifi_ap_record_t *)_scanResult) != ESP_OK) {
125+
delete[] reinterpret_cast<wifi_ap_record_t *>(WiFiScanClass::_scanResult);
126+
WiFiScanClass::_scanResult = 0;
123127
WiFiScanClass::_scanCount = 0;
124128
}
125129
}

0 commit comments

Comments
 (0)