Merge branch 'bugfix/uart_select_free_v4.0' into 'release/v4.0'

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

See merge request espressif/esp-idf!6085
This commit is contained in:
Angus Gratton
2019-09-13 14:49:46 +08:00

View File

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