The same code is in httpd but there it was fixed in
commit 6b535b529336a3fd1beb56c42ff5755b84ba9b03
Author: jung <[email protected]>
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;