소스 검색

tcp_transport: Fix some memory leak issues by coverity static analyzer.

aditi_lonkar 5 년 전
부모
커밋
98d19efe6f
3개의 변경된 파일10개의 추가작업 그리고 2개의 파일을 삭제
  1. 4 1
      components/tcp_transport/transport_ssl.c
  2. 4 1
      components/tcp_transport/transport_tcp.c
  3. 2 0
      components/tcp_transport/transport_ws.c

+ 4 - 1
components/tcp_transport/transport_ssl.c

@@ -303,7 +303,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);

+ 4 - 1
components/tcp_transport/transport_tcp.c

@@ -280,7 +280,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);

+ 2 - 0
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;
     });