[Fingerforce-commits] [fprintd] 02/12: pam: Fix eventfd leak

Didier Raboud odyx at moszumanska.debian.org
Sun Apr 12 13:12:06 UTC 2015


This is an automated email from the git hooks/post-receive script.

odyx pushed a commit to branch master
in repository fprintd.

commit 7e4630ced2be4b7ecdfb9d60cfe0e0d3de594411
Author: Bastien Nocera <hadess at hadess.net>
Date:   Mon Jan 27 12:24:14 2014 +0100

    pam: Fix eventfd leak
    
    When we create our own GMainContext, we need to be the ones
    disposing of it as well, as GMainLoop won't take ownership of it.
    
    From https://bugzilla.redhat.com/show_bug.cgi?id=1050827
---
 pam/pam_fprintd.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/pam/pam_fprintd.c b/pam/pam_fprintd.c
index 0f5e5a4..07302a1 100644
--- a/pam/pam_fprintd.c
+++ b/pam/pam_fprintd.c
@@ -170,6 +170,17 @@ static void close_and_unref (DBusGConnection *connection)
 	dbus_g_connection_unref (connection);
 }
 
+static void unref_loop (GMainLoop *loop)
+{
+	GMainContext *ctx;
+
+	/* The main context was created separately, so
+	 * we'll need to unref it ourselves */
+	ctx = g_main_loop_get_context (loop);
+	g_main_loop_unref (loop);
+	g_main_context_unref (ctx);
+}
+
 #define DBUS_TYPE_G_OBJECT_PATH_ARRAY (dbus_g_type_get_collection ("GPtrArray", DBUS_TYPE_G_OBJECT_PATH))
 
 static DBusGProxy *open_device(pam_handle_t *pamh, DBusGConnection *connection, DBusGProxy *manager, const char *username, gboolean *has_multiple_devices)
@@ -397,13 +408,13 @@ static int do_auth(pam_handle_t *pamh, const char *username)
 	dev = open_device(pamh, connection, manager, username, &has_multiple_devices);
 	g_object_unref (manager);
 	if (!dev) {
-		g_main_loop_unref (loop);
+		unref_loop (loop);
 		close_and_unref (connection);
 		return PAM_AUTHINFO_UNAVAIL;
 	}
 	ret = do_verify(loop, pamh, dev, has_multiple_devices);
 
-	g_main_loop_unref (loop);
+	unref_loop (loop);
 	release_device(pamh, dev);
 	g_object_unref (dev);
 	close_and_unref (connection);

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/fingerforce/fprintd.git



More information about the Fingerforce-commits mailing list