From 410128045955a8dfe460c09248618c8f9010a795 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Mon, 17 Jan 2022 22:05:36 -0500 Subject: [PATCH] kdc: cmd_append do not forget va_end() If va_start() is called then va_end() must be called before returning. Change-Id: I5312cf9b6ff238fc76bea248472302d5094bbc2b --- kdc/ipc_csr_authorizer.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/kdc/ipc_csr_authorizer.c b/kdc/ipc_csr_authorizer.c index fad3919a2..03df59529 100644 --- a/kdc/ipc_csr_authorizer.c +++ b/kdc/ipc_csr_authorizer.c @@ -169,6 +169,7 @@ cmd_append(struct rk_strpool **cmd, const char *s0, ...) { va_list ap; const char *arg; + int ret = 0; if ((*cmd = rk_strpoolprintf(*cmd, "%s", s0)) == NULL) return ENOMEM; @@ -177,14 +178,21 @@ cmd_append(struct rk_strpool **cmd, const char *s0, ...) while ((arg = va_arg(ap, const char *))) { char *s; - if ((s = string_encode(arg)) == NULL) - return rk_strpoolfree(*cmd), *cmd = NULL, ENOMEM; + if ((s = string_encode(arg)) == NULL) { + ret = rk_strpoolfree(*cmd), *cmd = NULL, ENOMEM; + goto out; + } *cmd = rk_strpoolprintf(*cmd, "%s", s); free(s); - if (*cmd == NULL) - return ENOMEM; + if (*cmd == NULL) { + ret = ENOMEM; + goto out; + } } - return 0; + + out: + va_end(ap); + return ret; } static int