From 8668c11a12626d1daca16bd4bdbf895b45bd7251 Mon Sep 17 00:00:00 2001 From: aditi_lonkar Date: Mon, 18 Jan 2021 11:35:48 +0530 Subject: [PATCH 1/7] wpa_supplicant: Fix some memory leak issues by coverity static analyzer. --- components/wpa_supplicant/src/common/sae.c | 5 ++++- components/wpa_supplicant/src/esp_supplicant/esp_wpa2.c | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/wpa_supplicant/src/common/sae.c b/components/wpa_supplicant/src/common/sae.c index 29a41c4566..e1d1c26753 100644 --- a/components/wpa_supplicant/src/common/sae.c +++ b/components/wpa_supplicant/src/common/sae.c @@ -675,7 +675,7 @@ static int sae_derive_commit_element_ffc(struct sae_data *sae, static int sae_derive_commit(struct sae_data *sae) { - struct crypto_bignum *mask; + struct crypto_bignum *mask = NULL; int ret = -1; unsigned int counter = 0; @@ -690,6 +690,9 @@ static int sae_derive_commit(struct sae_data *sae) */ return ESP_FAIL; } + if(mask) { + crypto_bignum_deinit(mask, 1); + } mask = sae_get_rand_and_mask(sae); if (mask == NULL) { diff --git a/components/wpa_supplicant/src/esp_supplicant/esp_wpa2.c b/components/wpa_supplicant/src/esp_supplicant/esp_wpa2.c index 7c0cc1899a..9ad5806614 100644 --- a/components/wpa_supplicant/src/esp_supplicant/esp_wpa2.c +++ b/components/wpa_supplicant/src/esp_supplicant/esp_wpa2.c @@ -749,6 +749,7 @@ static int eap_peer_sm_init(void) s_wpa2_data_lock = xSemaphoreCreateRecursiveMutex(); if (!s_wpa2_data_lock) { + free(sm); wpa_printf(MSG_ERROR, "wpa2 eap_peer_sm_init: failed to alloc data lock"); return ESP_ERR_NO_MEM; } From de3421718ddb91434f1fb0966a55affb23e01ac4 Mon Sep 17 00:00:00 2001 From: aditi_lonkar Date: Mon, 18 Jan 2021 11:36:22 +0530 Subject: [PATCH 2/7] tcp_transport: Fix some memory leak issues by coverity static analyzer. --- components/tcp_transport/transport_ssl.c | 5 ++++- components/tcp_transport/transport_tcp.c | 5 ++++- components/tcp_transport/transport_ws.c | 2 ++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/components/tcp_transport/transport_ssl.c b/components/tcp_transport/transport_ssl.c index 9e5699eb7d..f51dc0acdb 100644 --- a/components/tcp_transport/transport_ssl.c +++ b/components/tcp_transport/transport_ssl.c @@ -286,7 +286,10 @@ esp_transport_handle_t esp_transport_ssl_init(void) { esp_transport_handle_t t = esp_transport_init(); transport_ssl_t *ssl = calloc(1, sizeof(transport_ssl_t)); - ESP_TRANSPORT_MEM_CHECK(TAG, ssl, return NULL); + ESP_TRANSPORT_MEM_CHECK(TAG, ssl, { + esp_transport_destroy(t); + return NULL; + }); esp_transport_set_context_data(t, ssl); esp_transport_set_func(t, ssl_connect, ssl_read, ssl_write, ssl_close, ssl_poll_read, ssl_poll_write, ssl_destroy); esp_transport_set_async_connect_func(t, ssl_connect_async); diff --git a/components/tcp_transport/transport_tcp.c b/components/tcp_transport/transport_tcp.c index 975d0e8740..d94f483e5c 100644 --- a/components/tcp_transport/transport_tcp.c +++ b/components/tcp_transport/transport_tcp.c @@ -184,7 +184,10 @@ esp_transport_handle_t esp_transport_tcp_init(void) { esp_transport_handle_t t = esp_transport_init(); transport_tcp_t *tcp = calloc(1, sizeof(transport_tcp_t)); - ESP_TRANSPORT_MEM_CHECK(TAG, tcp, return NULL); + ESP_TRANSPORT_MEM_CHECK(TAG, tcp, { + esp_transport_destroy(t); + return NULL; + }); tcp->sock = -1; esp_transport_set_func(t, tcp_connect, tcp_read, tcp_write, tcp_close, tcp_poll_read, tcp_poll_write, tcp_destroy); esp_transport_set_context_data(t, tcp); diff --git a/components/tcp_transport/transport_ws.c b/components/tcp_transport/transport_ws.c index 632d148092..ba674d0cb1 100644 --- a/components/tcp_transport/transport_ws.c +++ b/components/tcp_transport/transport_ws.c @@ -459,12 +459,14 @@ esp_transport_handle_t esp_transport_ws_init(esp_transport_handle_t parent_handl ws->path = strdup("/"); ESP_TRANSPORT_MEM_CHECK(TAG, ws->path, { free(ws); + esp_transport_destroy(t); return NULL; }); ws->buffer = malloc(DEFAULT_WS_BUFFER); ESP_TRANSPORT_MEM_CHECK(TAG, ws->buffer, { free(ws->path); free(ws); + esp_transport_destroy(t); return NULL; }); From a9f6042d41b11a5686ebc3195b7aa7e770d35f93 Mon Sep 17 00:00:00 2001 From: aditi_lonkar Date: Mon, 18 Jan 2021 11:36:53 +0530 Subject: [PATCH 3/7] fatfs: Fix some memory leak issues by coverity static analyzer. --- components/fatfs/src/ff.c | 7 ++++++- components/fatfs/vfs/vfs_fat.c | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/components/fatfs/src/ff.c b/components/fatfs/src/ff.c index d9833c72e1..4ef121af2c 100644 --- a/components/fatfs/src/ff.c +++ b/components/fatfs/src/ff.c @@ -5586,7 +5586,12 @@ FRESULT f_mkfs ( sz_buf = len / ss; /* Size of working buffer (sector) */ szb_buf = sz_buf * ss; /* Size of working buffer (byte) */ } - if (!buf || sz_buf == 0) return FR_NOT_ENOUGH_CORE; + if (!buf || sz_buf == 0) { + if(buf != NULL) { + ff_memfree(buf); + } + return FR_NOT_ENOUGH_CORE; + } /* Determine where the volume to be located (b_vol, sz_vol) */ if (FF_MULTI_PARTITION && part != 0) { diff --git a/components/fatfs/vfs/vfs_fat.c b/components/fatfs/vfs/vfs_fat.c index 5506b1158f..cd9c242059 100644 --- a/components/fatfs/vfs/vfs_fat.c +++ b/components/fatfs/vfs/vfs_fat.c @@ -628,12 +628,12 @@ static int vfs_fat_link(void* ctx, const char* n1, const char* n2) } fail3: f_close(pf2); - free(pf2); fail2: f_close(pf1); - free(pf1); fail1: free(buf); + free(pf2); + free(pf1); if (res != FR_OK) { ESP_LOGD(TAG, "%s: fresult=%d", __func__, res); errno = fresult_to_errno(res); From ce1e71c0de1a2e2c11a23d3e337c837fd3c320fe Mon Sep 17 00:00:00 2001 From: aditi_lonkar Date: Mon, 18 Jan 2021 11:37:10 +0530 Subject: [PATCH 4/7] esp_netif: Fix some memory leak issues by coverity static analyzer. --- components/esp_netif/esp_netif_objects.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/esp_netif/esp_netif_objects.c b/components/esp_netif/esp_netif_objects.c index 2c23126bf9..30c645ef56 100644 --- a/components/esp_netif/esp_netif_objects.c +++ b/components/esp_netif/esp_netif_objects.c @@ -76,6 +76,7 @@ esp_err_t esp_netif_add_to_list(esp_netif_t *netif) item->netif = netif; if ((ret = esp_netif_list_lock()) != ESP_OK) { + free(item); return ret; } @@ -185,4 +186,4 @@ esp_netif_t *esp_netif_get_handle_from_ifkey(const char *if_key) } while (NULL != (esp_netif = esp_netif_next_unsafe(esp_netif))); esp_netif_list_unlock(); return NULL; -} \ No newline at end of file +} From 85d2d2fcf84f09f80265bec1374804649e553df1 Mon Sep 17 00:00:00 2001 From: aditi_lonkar Date: Mon, 18 Jan 2021 11:38:00 +0530 Subject: [PATCH 5/7] esp_local_ctrl: Fix some memory leak issues by coverity static analyzer. --- components/esp_local_ctrl/src/esp_local_ctrl_handler.c | 1 + 1 file changed, 1 insertion(+) diff --git a/components/esp_local_ctrl/src/esp_local_ctrl_handler.c b/components/esp_local_ctrl/src/esp_local_ctrl_handler.c index 23a92abd6c..722d48dc05 100644 --- a/components/esp_local_ctrl/src/esp_local_ctrl_handler.c +++ b/components/esp_local_ctrl/src/esp_local_ctrl_handler.c @@ -166,6 +166,7 @@ static esp_err_t cmd_set_prop_vals_handler(LocalCtrlMessage *req, ESP_LOGE(TAG, "Failed to allocate memory for setting values"); free(idxs); free(vals); + free(resp_payload); return ESP_ERR_NO_MEM; } for (size_t i = 0; i < req->cmd_set_prop_vals->n_props; i++) { From d6bf822ab8d1b054fd5e8a51f161e3406d8748f2 Mon Sep 17 00:00:00 2001 From: aditi_lonkar Date: Mon, 18 Jan 2021 11:38:24 +0530 Subject: [PATCH 6/7] wifi_provisioning: Fix some memory leak issues by coverity static analyzer. --- components/wifi_provisioning/src/wifi_config.c | 1 + 1 file changed, 1 insertion(+) diff --git a/components/wifi_provisioning/src/wifi_config.c b/components/wifi_provisioning/src/wifi_config.c index 93e3e85643..8b00fbd8ca 100644 --- a/components/wifi_provisioning/src/wifi_config.c +++ b/components/wifi_provisioning/src/wifi_config.c @@ -82,6 +82,7 @@ static esp_err_t cmd_get_status_handler(WiFiConfigPayload *req, WifiConnectedState *connected = (WifiConnectedState *)( malloc(sizeof(WifiConnectedState))); if (!connected) { + free(resp_payload); ESP_LOGE(TAG, "Error allocating memory"); return ESP_ERR_NO_MEM; } From 620e747355191378403dea086fb1a33c6d27b37c Mon Sep 17 00:00:00 2001 From: aditi_lonkar Date: Mon, 18 Jan 2021 11:38:46 +0530 Subject: [PATCH 7/7] esp_http_client: Fix some memory leak issues by coverity static analyzer. --- components/esp_http_client/lib/http_header.c | 1 + 1 file changed, 1 insertion(+) diff --git a/components/esp_http_client/lib/http_header.c b/components/esp_http_client/lib/http_header.c index 4d5e327d62..66af197f4d 100644 --- a/components/esp_http_client/lib/http_header.c +++ b/components/esp_http_client/lib/http_header.c @@ -97,6 +97,7 @@ static esp_err_t http_header_new_item(http_header_handle_t header, const char *k _header_new_item_exit: free(item->key); free(item->value); + free(item); return ESP_ERR_NO_MEM; }