diff options
author | Christophe Fergeau <cfergeau@redhat.com> | 2014-10-15 15:50:54 +0200 |
---|---|---|
committer | Stef Walter <stefw@gnome.org> | 2014-11-13 21:44:24 +0100 |
commit | 6da13bb815c3893ab305316ca3f08faaf0093953 (patch) | |
tree | d5879cea6a7c2c85a234cf8626f822defc19269e | |
parent | b087539a6cdd624fc4e0d6ae7de2811ab96864e6 (diff) |
daemon: Fix GStrv leak in DBus message handler
https://bugzilla.gnome.org/show_bug.cgi?id=738508
-rw-r--r-- | daemon/dbus/gkd-dbus.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/daemon/dbus/gkd-dbus.c b/daemon/dbus/gkd-dbus.c index e13e88dc..ad2aff24 100644 --- a/daemon/dbus/gkd-dbus.c +++ b/daemon/dbus/gkd-dbus.c @@ -103,7 +103,6 @@ message_handler_cb (DBusConnection *conn, DBusMessage *message, void *user_data) const gchar **env; DBusMessageIter items, entry; - gchar **parts; env = gkd_util_get_environment (); g_return_val_if_fail (env, DBUS_HANDLER_RESULT_NOT_YET_HANDLED); @@ -114,13 +113,17 @@ message_handler_cb (DBusConnection *conn, DBusMessage *message, void *user_data) if (!dbus_message_iter_open_container (&args, DBUS_TYPE_ARRAY, "{ss}", &items)) g_return_val_if_reached (DBUS_HANDLER_RESULT_NEED_MEMORY); while (*env) { + gchar **parts; parts = g_strsplit (*env, "=", 2); g_return_val_if_fail (parts && parts[0] && parts[1], DBUS_HANDLER_RESULT_NOT_YET_HANDLED); if (!dbus_message_iter_open_container (&items, DBUS_TYPE_DICT_ENTRY, NULL, &entry) || !dbus_message_iter_append_basic (&entry, DBUS_TYPE_STRING, &parts[0]) || !dbus_message_iter_append_basic (&entry, DBUS_TYPE_STRING, &parts[1]) || - !dbus_message_iter_close_container (&items, &entry)) + !dbus_message_iter_close_container (&items, &entry)) { + g_strfreev (parts); g_return_val_if_reached (DBUS_HANDLER_RESULT_NEED_MEMORY); + } + g_strfreev (parts); ++env; } if (!dbus_message_iter_close_container (&args, &items)) |