summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristophe Fergeau <cfergeau@redhat.com>2014-10-15 15:50:54 +0200
committerStef Walter <stefw@gnome.org>2014-11-13 21:44:24 +0100
commit6da13bb815c3893ab305316ca3f08faaf0093953 (patch)
treed5879cea6a7c2c85a234cf8626f822defc19269e
parentb087539a6cdd624fc4e0d6ae7de2811ab96864e6 (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.c7
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))