kdc: cmd_append do not forget va_end()
If va_start() is called then va_end() must be called before returning. Change-Id: I5312cf9b6ff238fc76bea248472302d5094bbc2b
This commit is contained in:
@@ -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
|
||||
|
Reference in New Issue
Block a user