diff --git a/src/util/virfirewalld.c b/src/util/virfirewalld.c index ad879164c3..d11e974cc2 100644 --- a/src/util/virfirewalld.c +++ b/src/util/virfirewalld.c @@ -240,6 +240,7 @@ virFirewallDGetPolicies(char ***policies, size_t *npolicies) GDBusConnection *sysbus = virGDBusGetSystemBus(); g_autoptr(GVariant) reply = NULL; g_autoptr(GVariant) array = NULL; + g_autoptr(virError) error = NULL; *npolicies = 0; *policies = NULL; @@ -247,10 +248,12 @@ virFirewallDGetPolicies(char ***policies, size_t *npolicies) if (!sysbus) return -1; + error = g_new0(virError, 1); + if (virGDBusCallMethod(sysbus, &reply, G_VARIANT_TYPE("(as)"), - NULL, + error, VIR_FIREWALL_FIREWALLD_SERVICE, "/org/fedoraproject/FirewallD1", "org.fedoraproject.FirewallD1.policy", @@ -258,6 +261,12 @@ virFirewallDGetPolicies(char ***policies, size_t *npolicies) NULL) < 0) return -1; + if (error->level == VIR_ERR_ERROR) { + if (!virGDBusErrorIsUnknownMethod(error)) + virReportErrorObject(error); + return -1; + } + g_variant_get(reply, "(@as)", &array); *policies = g_variant_dup_strv(array, npolicies);