From 158b32b7e009bc0a5615f188c6f72adcb0d99696 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 2 Sep 2015 17:10:58 +0200 Subject: [PATCH] settings: fix memleak in agent_secrets_done_cb() Fixes: df6706813a698e7a697739b0940bd8f528713aab --- src/settings/nm-settings-connection.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/settings/nm-settings-connection.c b/src/settings/nm-settings-connection.c index 62574eec2b..8e0c2a7276 100644 --- a/src/settings/nm-settings-connection.c +++ b/src/settings/nm-settings-connection.c @@ -138,6 +138,8 @@ typedef struct { typedef gboolean (*ForEachSecretFunc) (NMSettingSecretFlags flags, gpointer user_data); +/* Returns always a non-NULL, non-floating variant that must + * be unrefed by the caller. */ static GVariant * for_each_secret (NMConnection *self, GVariant *secrets, @@ -224,7 +226,7 @@ for_each_secret (NMConnection *self, g_variant_builder_add (&secrets_builder, "{sa{sv}}", setting_name, &setting_builder); } - return g_variant_builder_end (&secrets_builder); + return g_variant_ref_sink (g_variant_builder_end (&secrets_builder)); } typedef gboolean (*FindSecretFunc) (NMSettingSecretFlags flags, @@ -923,7 +925,6 @@ agent_secrets_done_cb (NMAgentManager *manager, call_id); } - g_variant_unref (filtered_secrets); } else { _LOGD ("(%s:%u) failed to update with agent secrets: (%d) %s", setting_name, @@ -931,6 +932,7 @@ agent_secrets_done_cb (NMAgentManager *manager, local ? local->code : -1, (local && local->message) ? local->message : "(unknown)"); } + g_variant_unref (filtered_secrets); } else { _LOGD ("(%s:%u) failed to update with existing secrets: (%d) %s", setting_name,