Kaynağa Gözat

VFS: Fix memory access after free() in UART select()

Closes https://github.com/espressif/esp-idf/issues/4030
Roland Dobai 6 yıl önce
ebeveyn
işleme
7cc225c85b
1 değiştirilmiş dosya ile 4 ekleme ve 4 silme
  1. 4 4
      components/vfs/vfs_uart.c

+ 4 - 4
components/vfs/vfs_uart.c

@@ -474,10 +474,6 @@ static esp_err_t uart_end_select(void *end_select_args)
 {
     uart_select_args_t *args = end_select_args;
 
-    if (args) {
-        free(args);
-    }
-
     portENTER_CRITICAL(uart_get_selectlock());
     esp_err_t ret = unregister_select(args);
     for (int i = 0; i < UART_NUM; ++i) {
@@ -485,6 +481,10 @@ static esp_err_t uart_end_select(void *end_select_args)
     }
     portEXIT_CRITICAL(uart_get_selectlock());
 
+    if (args) {
+        free(args);
+    }
+
     return ret;
 }