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.
This commit is contained in:
Me No Dev 2024-09-10 16:18:48 +03:00 committed by GitHub
parent 2c4ce95e16
commit d846311344
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -119,7 +119,11 @@ void WiFiScanClass::_scanDone() {
esp_wifi_scan_get_ap_num(&(WiFiScanClass::_scanCount));
if (WiFiScanClass::_scanCount) {
WiFiScanClass::_scanResult = new wifi_ap_record_t[WiFiScanClass::_scanCount];
if (!WiFiScanClass::_scanResult || esp_wifi_scan_get_ap_records(&(WiFiScanClass::_scanCount), (wifi_ap_record_t *)_scanResult) != ESP_OK) {
if (!WiFiScanClass::_scanResult) {
WiFiScanClass::_scanCount = 0;
} else if (esp_wifi_scan_get_ap_records(&(WiFiScanClass::_scanCount), (wifi_ap_record_t *)_scanResult) != ESP_OK) {
delete[] reinterpret_cast<wifi_ap_record_t *>(WiFiScanClass::_scanResult);
WiFiScanClass::_scanResult = 0;
WiFiScanClass::_scanCount = 0;
}
}