From 2272350820c26784d94448f001ce61574253a88b Mon Sep 17 00:00:00 2001 From: jgujarathi Date: Mon, 7 Nov 2022 10:53:44 +0530 Subject: [PATCH] (esp_wifi) : Adds improvements to esp_wps.c to cover up potential memory leaks. --- .../wpa_supplicant/esp_supplicant/src/esp_wps.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/components/wpa_supplicant/esp_supplicant/src/esp_wps.c b/components/wpa_supplicant/esp_supplicant/src/esp_wps.c index 90b1bb2144..b5ca925767 100644 --- a/components/wpa_supplicant/esp_supplicant/src/esp_wps.c +++ b/components/wpa_supplicant/esp_supplicant/src/esp_wps.c @@ -1462,6 +1462,9 @@ _err: sm->dev = NULL; } if (sm->wps_ctx) { + if (sm->wps_ctx->dh_privkey) { + wpabuf_free(sm->wps_ctx->dh_privkey); + } os_free(sm->wps_ctx); sm->wps_ctx = NULL; } @@ -1511,6 +1514,9 @@ wifi_station_wps_deinit(void) sm->dev = NULL; } if (sm->wps_ctx) { + if (sm->wps_ctx->dh_privkey) { + wpabuf_free(sm->wps_ctx->dh_privkey); + } os_free(sm->wps_ctx); sm->wps_ctx = NULL; } @@ -1630,11 +1636,13 @@ int wifi_station_wps_start(void) sm->is_wps_scan = true; wps_build_public_key(sm->wps, NULL); - sm->wps->wps->dh_privkey = wpabuf_dup(sm->wps->dh_privkey); + if (sm->wps->wps->dh_privkey) { + wpabuf_free(sm->wps->wps->dh_privkey); + } + sm->wps->wps->dh_privkey = sm->wps->dh_privkey; sm->wps->wps->dh_ctx = sm->wps->dh_ctx; sm->wps->wps->dh_pubkey = sm->wps->dh_pubkey_e; sm->wps->wps->rf_band_cb = wps_rf_band_cb; - wpabuf_clear_free(sm->wps->dh_privkey); sm->wps->dh_privkey = NULL; wifi_wps_scan(NULL, NULL); break;