The same code is in httpd but there it was fixed in 

commit 6b535b529336a3fd1beb56c42ff5755b84ba9b03
Author: jung <j...@openbsd.org>
Date:   Sun May 22 19:19:21 2016 +0000

    fix unbalanced va_start and va_end macros

    from Hiltjo Posthuma

    "do." deraadt

Found by codechecker

OK?
mbuhl

Index: usr.sbin/relayd/relayd.c
===================================================================
RCS file: /cvs/src/usr.sbin/relayd/relayd.c,v
retrieving revision 1.189
diff -u -p -r1.189 relayd.c
--- usr.sbin/relayd/relayd.c    3 Sep 2022 20:07:31 -0000       1.189
+++ usr.sbin/relayd/relayd.c    9 Nov 2022 23:51:57 -0000
@@ -656,11 +656,13 @@ kv_set(struct kv *kv, char *fmt, ...)
        va_list           ap;
        char            *value = NULL;
        struct kv       *ckv;
+       int              ret;
 
        va_start(ap, fmt);
-       if (vasprintf(&value, fmt, ap) == -1)
-               return (-1);
+       ret = vasprintf(&value, fmt, ap);
        va_end(ap);
+       if (ret == -1)
+               return (-1);
 
        /* Remove all children */
        while ((ckv = TAILQ_FIRST(&kv->kv_children)) != NULL) {
@@ -681,11 +683,13 @@ kv_setkey(struct kv *kv, char *fmt, ...)
 {
        va_list  ap;
        char    *key = NULL;
+       int      ret;
 
        va_start(ap, fmt);
-       if (vasprintf(&key, fmt, ap) == -1)
-               return (-1);
+       ret = vasprintf(&key, fmt, ap);
        va_end(ap);
+       if (ret == -1)
+               return (-1);
 
        free(kv->kv_key);
        kv->kv_key = key;

Reply via email to