From 7bf205162c4232360c325e4311a8bcb1d9fd5646 Mon Sep 17 00:00:00 2001 From: aditi_lonkar Date: Wed, 20 Jan 2021 17:03:49 +0530 Subject: [PATCH] tcp_transport: Fix some memory leak issues by coverity static analyzer. --- components/tcp_transport/transport_ssl.c | 5 ++++- components/tcp_transport/transport_tcp.c | 6 +++++- components/tcp_transport/transport_ws.c | 2 ++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/components/tcp_transport/transport_ssl.c b/components/tcp_transport/transport_ssl.c index 98cc7bce59..9e3854d7c2 100644 --- a/components/tcp_transport/transport_ssl.c +++ b/components/tcp_transport/transport_ssl.c @@ -325,7 +325,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 f39cee8d40..d61626f4f1 100644 --- a/components/tcp_transport/transport_tcp.c +++ b/components/tcp_transport/transport_tcp.c @@ -296,7 +296,11 @@ 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 b5043392cf..fa0e9bd7bd 100644 --- a/components/tcp_transport/transport_ws.c +++ b/components/tcp_transport/transport_ws.c @@ -587,12 +587,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(WS_BUFFER_SIZE); ESP_TRANSPORT_MEM_CHECK(TAG, ws->buffer, { free(ws->path); free(ws); + esp_transport_destroy(t); return NULL; });