[glib: 3/5] gdbusdaemon: Use require-same-user flag to avoid auth observer signal




commit 5d0ffe73b76288bd43f01ea2b20416d646c5dca3
Author: Philip Withnall <pwithnall endlessos org>
Date:   Tue Dec 15 13:01:38 2020 +0000

    gdbusdaemon: Use require-same-user flag to avoid auth observer signal
    
    This doesn’t change the `GDBusDaemon` behaviour, but does simplify the
    code a little.
    
    Signed-off-by: Philip Withnall <pwithnall endlessos org>
    
    Helps: #1804

 gio/gdbusdaemon.c | 46 +++++-----------------------------------------
 1 file changed, 5 insertions(+), 41 deletions(-)
---
diff --git a/gio/gdbusdaemon.c b/gio/gdbusdaemon.c
index ef902d65a..5dfe62cd3 100644
--- a/gio/gdbusdaemon.c
+++ b/gio/gdbusdaemon.c
@@ -1538,34 +1538,6 @@ on_new_connection (GDBusServer *server,
   return TRUE;
 }
 
-static gboolean
-on_authorize_authenticated_peer (GDBusAuthObserver *observer,
-                                GIOStream         *stream,
-                                GCredentials      *credentials,
-                                gpointer           user_data)
-{
-  gboolean authorized = FALSE;
-
-  if (credentials != NULL)
-    {
-      GCredentials *own_credentials;
-
-      own_credentials = g_credentials_new ();
-      authorized = g_credentials_is_same_user (credentials, own_credentials, NULL);
-      g_object_unref (own_credentials);
-    }
-#ifdef G_OS_WIN32
-  else
-    {
-      /* We allow ANONYMOUS authentication on Windows for now, in
-       * combination with the nonce-tcp transport. */
-      authorized = TRUE;
-    }
-#endif
-
-  return authorized;
-}
-
 static void
 g_dbus_daemon_finalize (GObject *object)
 {
@@ -1615,7 +1587,6 @@ initable_init (GInitable     *initable,
               GError       **error)
 {
   GDBusDaemon *daemon = G_DBUS_DAEMON (initable);
-  GDBusAuthObserver *observer;
   GDBusServerFlags flags;
 
   flags = G_DBUS_SERVER_FLAGS_NONE;
@@ -1629,24 +1600,23 @@ initable_init (GInitable     *initable,
          daemon->tmpdir = g_dir_make_tmp ("gdbus-daemon-XXXXXX", NULL);
          daemon->address = g_strdup_printf ("unix:tmpdir=%s", daemon->tmpdir);
        }
+      flags |= G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER;
 #else
+      /* Don’t require authentication on Windows as that hasn’t been
+       * implemented yet. */
       daemon->address = g_strdup ("nonce-tcp:");
       flags |= G_DBUS_SERVER_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS;
 #endif
     }
 
-  observer = g_dbus_auth_observer_new ();
   daemon->server = g_dbus_server_new_sync (daemon->address,
                                           flags,
                                           daemon->guid,
-                                          observer,
+                                          NULL,
                                           cancellable,
                                           error);
   if (daemon->server == NULL)
-    {
-      g_object_unref (observer);
-      return FALSE;
-    }
+    return FALSE;
 
 
   g_dbus_server_start (daemon->server);
@@ -1654,12 +1624,6 @@ initable_init (GInitable     *initable,
   g_signal_connect (daemon->server, "new-connection",
                    G_CALLBACK (on_new_connection),
                    daemon);
-  g_signal_connect (observer,
-                   "authorize-authenticated-peer",
-                   G_CALLBACK (on_authorize_authenticated_peer),
-                   daemon);
-
-  g_object_unref (observer);
 
   return TRUE;
 }


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