iolog: add va_end on error
authorVincent Fu <vincent.fu@samsung.com>
Thu, 5 Sep 2024 18:35:30 +0000 (14:35 -0400)
committerVincent Fu <vincent.fu@samsung.com>
Thu, 5 Sep 2024 18:35:30 +0000 (14:35 -0400)
Call va_end when we encounter an error trying to print sample fields.

This was reported by Coverity:

** CID 509197:  API usage errors  (VARARGS)
/iolog.c: 1025 in print_sample_fields()
________________________________________________________________________________________________________
*** CID 509197:  API usage errors  (VARARGS)
/iolog.c: 1025 in print_sample_fields()
1019      int ret;
1020
1021      va_start(ap, fmt);
1022      ret = vsnprintf(*p, *left, fmt, ap);
1023      if (ret < 0 || ret >= *left) {
1024      log_err("sample file write failed: %d\n", ret);
>>>     CID 509197:  API usage errors  (VARARGS)
>>>     "va_end" was not called for "ap".
1025      return -1;
1026      }
1027      va_end(ap);
1028
1029      *p += ret;
1030      *left -= ret;

Fixes: 3ec6b6da ("iolog: refactor flush_samples()")
Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
iolog.c

diff --git a/iolog.c b/iolog.c
index aadb0d052b460fa1dfbcdd4bdda7ced9f892d1b4..ef173b092947fd4aad54f8b583af9a27f7526a76 100644 (file)
--- a/iolog.c
+++ b/iolog.c
@@ -1022,6 +1022,7 @@ static int print_sample_fields(char **p, size_t *left, const char *fmt, ...) {
        ret = vsnprintf(*p, *left, fmt, ap);
        if (ret < 0 || ret >= *left) {
                log_err("sample file write failed: %d\n", ret);
+               va_end(ap);
                return -1;
        }
        va_end(ap);