[gdm/gnome-3-6] slave: add host authorizations individually
- From: Ray Strode <halfline src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gdm/gnome-3-6] slave: add host authorizations individually
- Date: Wed, 14 Nov 2012 17:04:27 +0000 (UTC)
commit ba1c35911977bf511b970b05e6a2532c43d306a6
Author: Ray Strode <rstrode redhat com>
Date: Mon Oct 15 18:18:49 2012 -0400
slave: add host authorizations individually
XAddHosts fails if any of the entries in the list fails.
The gdm-initial-setup user isn't available on most systems,
so XAddHosts fails on most systems.
Upshot is, since commit 189cd818bf1592b5b8607793575bcf4e71ba8008
most people have been relying on xauth cookies for X authorization.
xauth cookies aren't nearly as robust across hostname changes, so
that's not ideal.
This commit calls XAddHost() 3 times instead of one XAddHosts
call to work around the problem. Ideally, we'd only add
gdm-initial-setup when we need it instead of all the time.
That will have to come later.
https://bugzilla.gnome.org/show_bug.cgi?id=686186
(cherry picked from commit 2bd38e811f7f8194898ab4321eba36737729a493)
daemon/gdm-slave.c | 15 ++++++++++-----
1 files changed, 10 insertions(+), 5 deletions(-)
---
diff --git a/daemon/gdm-slave.c b/daemon/gdm-slave.c
index 287c7d6..948406a 100644
--- a/daemon/gdm-slave.c
+++ b/daemon/gdm-slave.c
@@ -681,6 +681,7 @@ gdm_slave_connect_to_x11_display (GdmSlave *slave)
} else if (slave->priv->display_is_local) {
XServerInterpretedAddress si_entries[3];
XHostAddress host_entries[3];
+ int i;
g_debug ("GdmSlave: Connected to display %s", slave->priv->display_name);
ret = TRUE;
@@ -691,8 +692,11 @@ gdm_slave_connect_to_x11_display (GdmSlave *slave)
gdm_slave_setup_xhost_auth (host_entries, si_entries);
gdm_error_trap_push ();
- XAddHosts (slave->priv->server_display, host_entries,
- G_N_ELEMENTS (host_entries));
+
+ for (i = 0; i < G_N_ELEMENTS (host_entries); i++) {
+ XAddHost (slave->priv->server_display, &host_entries[i]);
+ }
+
XSync (slave->priv->server_display, False);
if (gdm_error_trap_pop ()) {
g_warning ("Failed to give slave programs access to the display. Trying to proceed.");
@@ -918,6 +922,7 @@ gdm_slave_add_user_authorization (GdmSlave *slave,
{
XServerInterpretedAddress si_entries[3];
XHostAddress host_entries[3];
+ int i;
gboolean res;
GError *error;
char *filename;
@@ -954,14 +959,14 @@ gdm_slave_add_user_authorization (GdmSlave *slave,
*/
gdm_slave_setup_xhost_auth (host_entries, si_entries);
gdm_error_trap_push ();
- XRemoveHosts (slave->priv->server_display, host_entries,
- G_N_ELEMENTS (host_entries));
+ for (i = 0; i < G_N_ELEMENTS (host_entries); i++) {
+ XRemoveHost (slave->priv->server_display, &host_entries[i]);
+ }
XSync (slave->priv->server_display, False);
if (gdm_error_trap_pop ()) {
g_warning ("Failed to remove slave program access to the display. Trying to proceed.");
}
-
return res;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]