fix(nvs_flash): erase handle before delete on deinit

This commit is contained in:
sonika.rathi
2026-07-30 11:09:27 +02:00
parent 6e69e3294b
commit 8ce5eaeed8
+3 -2
View File
@@ -82,10 +82,11 @@ static esp_err_t close_handles_and_deinit(const char* part_name)
auto it = find_if(begin(s_nvs_handles), end(s_nvs_handles), belongs_to_part);
// Same as nvs_close(): erase from the list and delete the entry (frees NVSHandleSimple).
// Same as nvs_close(): unlink first, then delete. Deleting while still linked
// UAF-corrupts the intrusive list (hangs host tests).
while (it != end(s_nvs_handles)) {
delete static_cast<NVSHandleEntry*>(it);
s_nvs_handles.erase(it);
delete static_cast<NVSHandleEntry*>(it);
it = find_if(begin(s_nvs_handles), end(s_nvs_handles), belongs_to_part);
}