From 9b11b69a4686520c9bbd2aaec173b3c6c3a55b20 Mon Sep 17 00:00:00 2001 From: Konstantin Kondrashov Date: Wed, 20 Aug 2025 12:54:25 +0300 Subject: [PATCH 1/4] fix(console): Fixes Coverity false positive in va_list initialization --- components/console/argtable3/arg_dstr.c | 2 +- components/console/argtable3/arg_utils.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/components/console/argtable3/arg_dstr.c b/components/console/argtable3/arg_dstr.c index 6e6cf6b007..0438e6fe07 100644 --- a/components/console/argtable3/arg_dstr.c +++ b/components/console/argtable3/arg_dstr.c @@ -221,7 +221,7 @@ void arg_dstr_catc(arg_dstr_t ds, char c) { * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ void arg_dstr_catf(arg_dstr_t ds, const char* fmt, ...) { - va_list arglist; + va_list arglist = {0}; char* buff; int n, r; size_t slen; diff --git a/components/console/argtable3/arg_utils.c b/components/console/argtable3/arg_utils.c index f10034fd5c..486e2ed0ce 100644 --- a/components/console/argtable3/arg_utils.c +++ b/components/console/argtable3/arg_utils.c @@ -50,14 +50,14 @@ static void panic(const char* fmt, ...); static arg_panicfn* s_panic = panic; void dbg_printf(const char* fmt, ...) { - va_list args; + va_list args = {0}; va_start(args, fmt); vfprintf(stderr, fmt, args); va_end(args); } static void panic(const char* fmt, ...) { - va_list args; + va_list args = {0}; char* s; va_start(args, fmt); From ca2ccf164c1807e4015bf5713da188902c2b9588 Mon Sep 17 00:00:00 2001 From: Konstantin Kondrashov Date: Wed, 20 Aug 2025 14:04:43 +0300 Subject: [PATCH 2/4] fix(log): Fixes Coverity false positive in va_list initialization --- components/log/src/log.c | 2 +- components/log/src/log_print.c | 2 +- components/log/src/os/log_write.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/components/log/src/log.c b/components/log/src/log.c index bbba5bc340..1724db2c59 100644 --- a/components/log/src/log.c +++ b/components/log/src/log.c @@ -83,7 +83,7 @@ void __attribute__((optimize("-O3"))) esp_log(esp_log_config_t config, const cha #else // ESP_LOG_VERSION == 2 if (is_level_loggable(config)) { #endif - va_list args; + va_list args = {0}; va_start(args, format); esp_log_va(config, tag, format, args); va_end(args); diff --git a/components/log/src/log_print.c b/components/log/src/log_print.c index fc7f78618d..a10a5f9cdb 100644 --- a/components/log/src/log_print.c +++ b/components/log/src/log_print.c @@ -12,7 +12,7 @@ void esp_log_printf(esp_log_config_t config, const char *format, ...) { - va_list args; + va_list args = {0}; va_start(args, format); esp_log_vprintf(config, format, args); va_end(args); diff --git a/components/log/src/os/log_write.c b/components/log/src/os/log_write.c index 810fd86adf..0e5bbad056 100644 --- a/components/log/src/os/log_write.c +++ b/components/log/src/os/log_write.c @@ -37,7 +37,7 @@ void esp_log_write(esp_log_level_t level, const char *tag, const char *format, ...) { - va_list list; + va_list list = {0}; va_start(list, format); esp_log_va(ESP_LOG_CONFIG_INIT(level), tag, format, list); va_end(list); From 1ca82baec3098fae98aeafe2379f77c70d39f21b Mon Sep 17 00:00:00 2001 From: Konstantin Kondrashov Date: Wed, 20 Aug 2025 12:35:36 +0300 Subject: [PATCH 3/4] fix(heap): Fixes Coverity false positive in va_list initialization --- components/heap/heap_caps.c | 73 +++++++++++++++++++++++-------------- 1 file changed, 45 insertions(+), 28 deletions(-) diff --git a/components/heap/heap_caps.c b/components/heap/heap_caps.c index d19f5bd76e..0b27b0b523 100644 --- a/components/heap/heap_caps.c +++ b/components/heap/heap_caps.c @@ -171,22 +171,27 @@ HEAP_IRAM_ATTR void *heap_caps_realloc_default( void *ptr, size_t size ) */ HEAP_IRAM_ATTR void *heap_caps_malloc_prefer( size_t size, size_t num, ... ) { - va_list argp; - va_start( argp, num ); void *r = NULL; uint32_t caps = MALLOC_CAP_DEFAULT; - while (num--) { - caps = va_arg( argp, uint32_t ); - r = heap_caps_malloc_base( size, caps ); - if (r != NULL || size == 0) { - break; + + if (num > 0) { + va_list argp = {0}; + va_start(argp, num); + + for ( ; num > 0; --num) { + caps = va_arg(argp, uint32_t); + r = heap_caps_malloc_base(size, caps); + if (r != NULL || size == 0) { + break; + } } + + va_end( argp ); } - if (r == NULL && size > 0){ + if (r == NULL && size > 0) { heap_caps_alloc_failed(size, caps, __func__); } - va_end( argp ); return r; } @@ -195,46 +200,58 @@ HEAP_IRAM_ATTR void *heap_caps_malloc_prefer( size_t size, size_t num, ... ) */ HEAP_IRAM_ATTR void *heap_caps_realloc_prefer( void *ptr, size_t size, size_t num, ... ) { - va_list argp; - va_start( argp, num ); void *r = NULL; uint32_t caps = MALLOC_CAP_DEFAULT; - while (num--) { - caps = va_arg( argp, uint32_t ); - r = heap_caps_realloc_base( ptr, size, caps ); - if (r != NULL || size == 0) { - break; + + if (num > 0) { + va_list argp = {0}; + va_start(argp, num); + + for ( ; num > 0; --num) { + caps = va_arg(argp, uint32_t); + r = heap_caps_realloc_base(ptr, size, caps); + if (r != NULL || size == 0) { + break; + } } + + va_end( argp ); } - if (r == NULL && size > 0){ + if (r == NULL && size > 0) { heap_caps_alloc_failed(size, caps, __func__); } - va_end( argp ); return r; } + /* Memory callocation as preference in decreasing order. */ -HEAP_IRAM_ATTR void *heap_caps_calloc_prefer( size_t n, size_t size, size_t num, ... ) +HEAP_IRAM_ATTR void *heap_caps_calloc_prefer(size_t n, size_t size, size_t num, ...) { - va_list argp; - va_start( argp, num ); void *r = NULL; uint32_t caps = MALLOC_CAP_DEFAULT; - while (num--) { - caps = va_arg( argp, uint32_t ); - r = heap_caps_calloc_base( n, size, caps ); - if (r != NULL || size == 0){ - break; + + if (num > 0) { + va_list argp = {0}; + va_start(argp, num); + + for (; num > 0; --num) { + caps = va_arg(argp, uint32_t); + r = heap_caps_calloc_base(n, size, caps); + if (r != NULL || size == 0) { + break; + } } + + va_end(argp); } - if (r == NULL && size > 0){ + if (r == NULL && size > 0) { heap_caps_alloc_failed(size, caps, __func__); } - va_end( argp ); + return r; } From 91a2744d44907e0b63d82fb55b66479f426fad5c Mon Sep 17 00:00:00 2001 From: Konstantin Kondrashov Date: Wed, 20 Aug 2025 14:35:29 +0300 Subject: [PATCH 4/4] fix(rt): Fixes Coverity false positive in va_list initialization --- components/rt/FreeRTOS_POSIX_mqueue.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/rt/FreeRTOS_POSIX_mqueue.c b/components/rt/FreeRTOS_POSIX_mqueue.c index 22ebf4e0ad..03e72a2bac 100644 --- a/components/rt/FreeRTOS_POSIX_mqueue.c +++ b/components/rt/FreeRTOS_POSIX_mqueue.c @@ -506,7 +506,7 @@ mqd_t mq_open( const char * name, if( oflag & O_CREAT ) { - va_list args; + va_list args = {0}; va_start( args, oflag ); mode = va_arg( args, mode_t ); attr = va_arg( args, struct mq_attr * );