From a41d3608425c657daaefc2fff96b51e0523395fa Mon Sep 17 00:00:00 2001 From: David Cermak Date: Mon, 15 May 2023 10:28:54 +0200 Subject: [PATCH] freertos/linux: Fix use after scope exit in select() wrap --- .../freertos/esp_additions/FreeRTOSSimulator_wrappers.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/components/freertos/esp_additions/FreeRTOSSimulator_wrappers.c b/components/freertos/esp_additions/FreeRTOSSimulator_wrappers.c index 051c1840a7..7084eaf82c 100644 --- a/components/freertos/esp_additions/FreeRTOSSimulator_wrappers.c +++ b/components/freertos/esp_additions/FreeRTOSSimulator_wrappers.c @@ -25,12 +25,14 @@ int __wrap_select (int fd, fd_set * rfds, fd_set * wfds, fd_set *efds, struct ti { int ret; struct timeval *tv = tval; + struct timeval timeval_local = {}; int64_t start = 0; int64_t timeout_us = 0; if (tv != NULL) { start = get_us(); timeout_us = tval->tv_sec * 1000000 + tval->tv_usec; - struct timeval timeval_local = { .tv_sec = tval->tv_sec, .tv_usec = tval->tv_usec }; + timeval_local.tv_sec = tval->tv_sec; + timeval_local.tv_usec = tval->tv_usec; tv = &timeval_local; // this (tv != NULL) indicates that we should handle timeouts } while ((ret = __real_select(fd, rfds, wfds, efds, tv)) < 0 && errno == EINTR) {