} else if (STREQ(bus_name, VIR_FIREWALL_FIREWALLD_SERVICE) &&
STREQ(method_name, "passthrough")) {
g_autoptr(GVariantIter) iter = NULL;
+ static const size_t maxargs = 5;
g_auto(GStrv) args = NULL;
size_t nargs = 0;
char *type = NULL;
g_variant_get(params, "(&sas)", &type, &iter);
- nargs = g_variant_iter_n_children(iter);
+ args = g_new0(char *, maxargs);
if (fwBuf) {
if (STREQ(type, "ipv4"))
doError = true;
}
- virStringListAdd(&args, item);
+ if (nargs < maxargs)
+ args[nargs] = g_strdup(item);
+ nargs++;
if (fwBuf) {
virBufferAddLit(fwBuf, " ");