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;