diff options
author | 5 <mkp@mkp.net> | 1999-08-14 22:49:15 +0000 |
---|---|---|
committer | Martin Peterson <mkp@src.gnome.org> | 1999-08-14 22:49:15 +0000 |
commit | bbe7d0e90e89374a78b5bc1cf3f95a73af647aa8 (patch) | |
tree | 0cd48f888d61a747434d5355c2fca7b7663731af | |
parent | a7bb22a0ca6f3c9403dac59ce0e2f8a475935b00 (diff) | |
download | gdm-bbe7d0e90e89374a78b5bc1cf3f95a73af647aa8.tar.gz |
Fixed cookie problems for local displays.
1999-08-15 <mkp@mkp.net>
* daemon/auth.c: Fixed cookie problems for local displays.
* daemon/gdm.c (gdm_display_dispose): Free Xauth.
1999-08-14 <mkp@mkp.net>
* gui/gdmlogin.c: Fixed a few gtk_widget_set_sensitive(NULL)
occurrences.
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | daemon/auth.c | 32 | ||||
-rw-r--r-- | daemon/gdm.c | 8 | ||||
-rw-r--r-- | daemon/gdm.h | 14 | ||||
-rw-r--r-- | daemon/slave.c | 2 | ||||
-rw-r--r-- | daemon/xdmcp.c | 3 | ||||
-rw-r--r-- | gui/gdmlogin.c | 8 |
7 files changed, 68 insertions, 10 deletions
@@ -1,3 +1,14 @@ +1999-08-15 <mkp@mkp.net> + + * daemon/auth.c: Fixed cookie problems for local displays. + + * daemon/gdm.c (gdm_display_dispose): Free Xauth. + +1999-08-14 <mkp@mkp.net> + + * gui/gdmlogin.c: Fixed a few gtk_widget_set_sensitive(NULL) + occurrences. + 1999-08-11 <mkp@mkp.net> * daemon/auth.c: Nailed down the bug that has been haunting me the diff --git a/daemon/auth.c b/daemon/auth.c index 5f8caca1..38255fcb 100644 --- a/daemon/auth.c +++ b/daemon/auth.c @@ -80,6 +80,28 @@ gdm_auth_secure_display (GdmDisplay *d) if (!af) return (FALSE); + /* If this is a local display the struct hasn't changed and we + * have to clean up old authentication cookies before baking new + * ones + */ + if (d->type == DISPLAY_LOCAL && d->auths) { + GSList *alist = d->auths; + + while (alist && alist->data) { + XauDisposeAuth ((Xauth *) alist->data); + alist = alist->next; + } + + g_slist_free (d->auths); + d->auths = NULL; + + if (d->cookie) + g_free (d->cookie); + + if (d->bcookie) + g_free (d->bcookie); + } + gdm_cookie_generate (d); /* FQDN or IP of display host */ @@ -100,13 +122,13 @@ gdm_auth_secure_display (GdmDisplay *d) return (FALSE); xa->family = FamilyLocal; - xa->address = d->hostname; + xa->address = strdup (d->hostname); xa->address_length = strlen (d->hostname); xa->number = g_strdup_printf ("%d", d->dispnum); xa->number_length = 1; - xa->name = "MIT-MAGIC-COOKIE-1"; + xa->name = strdup ("MIT-MAGIC-COOKIE-1"); xa->name_length = 18; - xa->data = d->bcookie; + xa->data = strdup (d->bcookie); xa->data_length = strlen (d->bcookie); XauWriteAuth (af, xa); d->auths = g_slist_append (d->auths, xa); @@ -138,9 +160,9 @@ gdm_auth_secure_display (GdmDisplay *d) xa->address_length = 4; xa->number = g_strdup_printf ("%d", d->dispnum); xa->number_length = 1; - xa->name = "MIT-MAGIC-COOKIE-1"; + xa->name = strdup ("MIT-MAGIC-COOKIE-1"); xa->name_length = 18; - xa->data = d->bcookie; + xa->data = strdup (d->bcookie); xa->data_length = strlen (d->bcookie); XauWriteAuth (af, xa); diff --git a/daemon/gdm.c b/daemon/gdm.c index 702c7ae5..861e03cf 100644 --- a/daemon/gdm.c +++ b/daemon/gdm.c @@ -87,6 +87,9 @@ gint GdmMaxPending; gint GdmMaxManageWait; gint GdmMaxSessions; gint GdmPort; +gint GdmIndirect; +gint GdmMaxIndirect; +gint GdmMaxIndirectWait; gint GdmDebug; gint GdmVerboseAuth; gint GdmAllowRoot; @@ -125,7 +128,7 @@ gdm_display_dispose (GdmDisplay *d) tmpauth = d->auths; while (tmpauth && tmpauth->data) { - /* XauDisposeAuth ((Xauth *) tmpauth->data); */ + XauDisposeAuth ((Xauth *) tmpauth->data); tmpauth = tmpauth->next; } @@ -195,6 +198,9 @@ gdm_config_parse (void) GdmMaxManageWait = gnome_config_get_int (GDM_KEY_MAXWAIT); GdmMaxSessions = gnome_config_get_int (GDM_KEY_MAXSESS); GdmPort = gnome_config_get_int (GDM_KEY_UDPPORT); + GdmIndirect = gnome_config_get_int (GDM_KEY_INDIRECT); + GdmMaxIndirect = gnome_config_get_int (GDM_KEY_MAXINDIR); + GdmMaxIndirectWait = gnome_config_get_int (GDM_KEY_MAXINDWAIT); GdmDebug = gnome_config_get_int (GDM_KEY_DEBUG); diff --git a/daemon/gdm.h b/daemon/gdm.h index 37bcce35..bc6c30f9 100644 --- a/daemon/gdm.h +++ b/daemon/gdm.h @@ -19,6 +19,9 @@ #ifndef __GDM_H__ #define __GDM_H__ +#include <X11/Xmd.h> +#include <X11/Xdmcp.h> + #define DISPLAY_LOCAL 1 /* Local X server */ #define DISPLAY_XDMCP 2 /* Remote display */ @@ -92,6 +95,9 @@ #define GDM_KEY_MAXSESS "xdmcp/MaxSessions=16" #define GDM_KEY_MAXWAIT "xdmcp/MaxWait=30" #define GDM_KEY_UDPPORT "xdmcp/Port=177" +#define GDM_KEY_INDIRECT "xdmcp/HonorIndirect=1" +#define GDM_KEY_MAXINDIR "xdmcp/MaxPendingIndirect=4" +#define GDM_KEY_MAXINDWAIT "xdmcp/MaxWaitIndirect=30" #define GDM_KEY_GTKRC "gui/GtkRC=" #define GDM_KEY_ICONWIDTH "gui/MaxIconWidth=128" @@ -149,6 +155,14 @@ struct _GdmDisplay { time_t acctime; }; + +typedef struct _GdmIndirectHost GdmIndirectHost; + +struct _GdmIndirectHost { + ARRAY8Ptr addr; + time_t acctime; +}; + #endif /* __GDM_H__ */ /* EOF */ diff --git a/daemon/slave.c b/daemon/slave.c index bb2eb85e..ccad2690 100644 --- a/daemon/slave.c +++ b/daemon/slave.c @@ -260,7 +260,7 @@ gdm_slave_greeter (void) sigaddset (&mask, SIGCHLD); sigprocmask (SIG_BLOCK, &mask, &omask); - greet=FALSE; + greet = FALSE; /* Kill greeter and wait for it to die */ kill (d->greetpid, SIGINT); diff --git a/daemon/xdmcp.c b/daemon/xdmcp.c index 79672cef..dfd14d2e 100644 --- a/daemon/xdmcp.c +++ b/daemon/xdmcp.c @@ -91,7 +91,7 @@ gint deny_severity = LOG_WARNING; gint xdmcpfd; gint globsessid; -gint pending=0; +gint pending = 0; static gchar *sysid; static ARRAY8 servhost; static XdmcpBuffer buf; @@ -105,6 +105,7 @@ extern gint GdmMaxPending; /* only accept this number of pending sessions */ extern gint GdmMaxManageWait; /* Dispose sessions not responding with MANAGE after 10 secs */ extern gint GdmMaxSessions; /* Maximum number of remote sessions */ extern gint GdmPort; /* UDP port number */ +extern gint GdmIndirect; /* Honor XDMCP_INDIRECT, i.e. choosing */ /* * We don't support XDM-AUTHENTICATION-1 and XDM-AUTHORIZATION-1. diff --git a/gui/gdmlogin.c b/gui/gdmlogin.c index eb9c1537..c640107f 100644 --- a/gui/gdmlogin.c +++ b/gui/gdmlogin.c @@ -587,7 +587,9 @@ gdm_login_entry_handler (GtkWidget *widget, GdkEventKey *event) case GDK_Return: gtk_widget_set_sensitive (GTK_WIDGET (entry), FALSE); - gtk_widget_set_sensitive (GTK_WIDGET (browser), FALSE); + + if (GdmBrowser) + gtk_widget_set_sensitive (GTK_WIDGET (browser), FALSE); /* Save login. I'm making the assumption that login is always * the first thing entered. This might not be true for all PAM @@ -911,7 +913,9 @@ gdm_login_ctrl_handler (GIOChannel *source, GIOCondition cond, gint fd) } gtk_widget_set_sensitive (GTK_WIDGET (entry), TRUE); - gtk_widget_set_sensitive (GTK_WIDGET (browser), TRUE); + + if (GdmBrowser) + gtk_widget_set_sensitive (GTK_WIDGET (browser), TRUE); g_print ("\n"); break; |