[gnome-keyring] daemon: Fix GStrv leak in DBus message handler



commit 6da13bb815c3893ab305316ca3f08faaf0093953
Author: Christophe Fergeau <cfergeau redhat com>
Date:   Wed Oct 15 15:50:54 2014 +0200

    daemon: Fix GStrv leak in DBus message handler
    
    https://bugzilla.gnome.org/show_bug.cgi?id=738508

 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 e13e88d..ad2aff2 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))


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]