diff --git a/src/util/ebtables.c b/src/util/ebtables.c index e2b96085e649d0046e7f518d17d447d5551b417f..f707756e4bae7cfb3ae75197245b1866356ac448 100644 --- a/src/util/ebtables.c +++ b/src/util/ebtables.c @@ -210,9 +210,12 @@ ebtablesAddRemoveRule(ebtRules *rules, int action, const char *arg, ...) va_start(args, arg); - while ((s = va_arg(args, const char *))) - if (!(argv[n++] = strdup(s))) + while ((s = va_arg(args, const char *))) { + if (!(argv[n++] = strdup(s))) { + va_end(args); goto error; + } + } va_end(args); diff --git a/src/util/iptables.c b/src/util/iptables.c index 4f95a02a1bd1c9216ace1481e5cde8acc86ea4eb..d06b857f9f6593019be7f5f0362fdd7d994962c4 100644 --- a/src/util/iptables.c +++ b/src/util/iptables.c @@ -137,9 +137,12 @@ iptablesAddRemoveRule(iptRules *rules, int action, const char *arg, ...) va_start(args, arg); - while ((s = va_arg(args, const char *))) - if (!(argv[n++] = strdup(s))) + while ((s = va_arg(args, const char *))) { + if (!(argv[n++] = strdup(s))) { + va_end(args); goto error; + } + } va_end(args);