Module Name:    xsrc
Committed By:   mrg
Date:           Fri May 31 22:24:39 UTC 2013

Modified Files:
        xsrc/external/mit/xdm/dist/config: Xresources.cpp
        xsrc/external/mit/xdm/dist/greeter: greet.c
Removed Files:
        xsrc/external/mit/xdm/dist: access.c auth.c choose.c chooser.c compile
            daemon.c dm.c dm.h dm_auth.h dm_error.h dm_socket.h dpylist.c
            error.c file.c genauth.c greet.h krb5auth.c mitauth.c netaddr.c
            policy.c prngc.c protodpy.c reset.c resource.c rpcauth.c server.c
            session.c socket.c streams.c util.c xdm.man.cpp xdmauth.c xdmcp.c
            xdmshell.c
        xsrc/external/mit/xdm/dist/app-defaults: Chooser.ad
        xsrc/external/mit/xdm/dist/m4: ac_define_dir.m4 libtool.m4 ltoptions.m4
            ltsugar.m4 ltversion.m4 lt~obsolete.m4

Log Message:
merge xdm 1.1.11


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.3 -r0 xsrc/external/mit/xdm/dist/access.c \
    xsrc/external/mit/xdm/dist/auth.c xsrc/external/mit/xdm/dist/compile \
    xsrc/external/mit/xdm/dist/dm.c xsrc/external/mit/xdm/dist/session.c \
    xsrc/external/mit/xdm/dist/socket.c \
    xsrc/external/mit/xdm/dist/xdm.man.cpp xsrc/external/mit/xdm/dist/xdmcp.c
cvs rdiff -u -r1.1.1.2 -r0 xsrc/external/mit/xdm/dist/choose.c \
    xsrc/external/mit/xdm/dist/chooser.c xsrc/external/mit/xdm/dist/daemon.c \
    xsrc/external/mit/xdm/dist/dm.h xsrc/external/mit/xdm/dist/dm_auth.h \
    xsrc/external/mit/xdm/dist/dm_error.h \
    xsrc/external/mit/xdm/dist/dm_socket.h \
    xsrc/external/mit/xdm/dist/dpylist.c xsrc/external/mit/xdm/dist/error.c \
    xsrc/external/mit/xdm/dist/file.c xsrc/external/mit/xdm/dist/genauth.c \
    xsrc/external/mit/xdm/dist/greet.h xsrc/external/mit/xdm/dist/krb5auth.c \
    xsrc/external/mit/xdm/dist/mitauth.c xsrc/external/mit/xdm/dist/netaddr.c \
    xsrc/external/mit/xdm/dist/policy.c xsrc/external/mit/xdm/dist/prngc.c \
    xsrc/external/mit/xdm/dist/protodpy.c xsrc/external/mit/xdm/dist/reset.c \
    xsrc/external/mit/xdm/dist/resource.c \
    xsrc/external/mit/xdm/dist/rpcauth.c xsrc/external/mit/xdm/dist/server.c \
    xsrc/external/mit/xdm/dist/streams.c xsrc/external/mit/xdm/dist/util.c \
    xsrc/external/mit/xdm/dist/xdmauth.c \
    xsrc/external/mit/xdm/dist/xdmshell.c
cvs rdiff -u -r1.1.1.1 -r0 xsrc/external/mit/xdm/dist/app-defaults/Chooser.ad
cvs rdiff -u -r1.5 -r1.6 xsrc/external/mit/xdm/dist/config/Xresources.cpp
cvs rdiff -u -r1.4 -r1.5 xsrc/external/mit/xdm/dist/greeter/greet.c
cvs rdiff -u -r1.1.1.1 -r0 xsrc/external/mit/xdm/dist/m4/ac_define_dir.m4 \
    xsrc/external/mit/xdm/dist/m4/libtool.m4 \
    xsrc/external/mit/xdm/dist/m4/ltoptions.m4 \
    xsrc/external/mit/xdm/dist/m4/ltsugar.m4 \
    xsrc/external/mit/xdm/dist/m4/ltversion.m4 \
    xsrc/external/mit/xdm/dist/m4/lt~obsolete.m4

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: xsrc/external/mit/xdm/dist/config/Xresources.cpp
diff -u xsrc/external/mit/xdm/dist/config/Xresources.cpp:1.5 xsrc/external/mit/xdm/dist/config/Xresources.cpp:1.6
--- xsrc/external/mit/xdm/dist/config/Xresources.cpp:1.5	Mon Nov  9 07:12:59 2009
+++ xsrc/external/mit/xdm/dist/config/Xresources.cpp	Fri May 31 22:24:39 2013
@@ -1,9 +1,3 @@
-!
-!
-!
-!
-!
-
 Xcursor.theme: whiteglass
 
 #define BS \ /* cpp can be trickier than m4 */
@@ -23,7 +17,7 @@ xlogin*login.translations: #override BS
 
 xlogin*greeting: Welcome to CLIENTHOST
 xlogin*namePrompt: \040\040\040\040\040\040\040Login:
-xlogin*fail: Login incorrect
+xlogin*fail: Login incorrect or forbidden by policy
 
 XHASHif WIDTH > 800
 xlogin*greetFont: -adobe-helvetica-bold-o-normal--24-240-75-75-p-138-iso8859-1

Index: xsrc/external/mit/xdm/dist/greeter/greet.c
diff -u xsrc/external/mit/xdm/dist/greeter/greet.c:1.4 xsrc/external/mit/xdm/dist/greeter/greet.c:1.5
--- xsrc/external/mit/xdm/dist/greeter/greet.c:1.4	Fri May 21 04:59:52 2010
+++ xsrc/external/mit/xdm/dist/greeter/greet.c	Fri May 31 22:24:39 2013
@@ -26,7 +26,7 @@ from The Open Group.
 
 */
 /*
- * Copyright © 2006 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -93,7 +93,6 @@ from The Open Group.
 extern int getdomainname(char *name, size_t len);
 #endif
 
-#ifdef GREET_LIB
 /*
  * Function pointers filled in by the initial call ito the library
  */
@@ -120,7 +119,7 @@ void    (*__xdm_LogOutOfMem)(const char 
 void    (*__xdm_setgrent)(void) = NULL;
 struct group    *(*__xdm_getgrent)(void) = NULL;
 void    (*__xdm_endgrent)(void) = NULL;
-# ifdef USESHADOW
+# ifdef HAVE_GETSPNAM
 struct spwd   *(*__xdm_getspnam)(GETSPNAM_ARGS) = NULL;
 #  ifndef QNX4
 void   (*__xdm_endspent)(void) = NULL;
@@ -135,8 +134,6 @@ char     *(*__xdm_crypt)(CRYPT_ARGS) = N
 pam_handle_t **(*__xdm_thepamhp)(void) = NULL;
 # endif
 
-#endif
-
 #ifdef SECURE_RPC
 # include <rpc/rpc.h>
 # include <rpc/key_prot.h>
@@ -146,8 +143,6 @@ pam_handle_t **(*__xdm_thepamhp)(void) =
 # include <krb5/krb5.h>
 #endif
 
-extern Display	*dpy;
-
 static int	done, code;
 #ifndef USE_PAM
 static char	name[NAME_LEN], password[PASSWORD_LEN];
@@ -315,7 +310,7 @@ InitGreet (struct display *d)
 
     if (d->pingInterval)
     {
-    	pingTimeout = XtAppAddTimeOut (context, d->pingInterval * 60 * 1000,
+	pingTimeout = XtAppAddTimeOut (context, d->pingInterval * 60 * 1000,
 				       GreetPingServer, (XtPointer) d);
     }
     return dpy;
@@ -356,7 +351,7 @@ static int
 Greet (struct display *d, struct greet_info *greet)
 {
     XEvent		event;
-    Arg		arglist[3];
+    Arg		arglist[1];
 
     XtSetArg (arglist[0], XtNallowAccess, False);
     XtSetValues (login, arglist, 1);
@@ -399,9 +394,7 @@ Greet (struct display *d, struct greet_i
 	greet->password = password;
 #endif  /* USE_PAM */
 	XtSetArg (arglist[0], XtNsessionArgument, (char *) &(greet->string));
-	XtSetArg (arglist[1], XtNallowNullPasswd, (char *) &(greet->allow_null_passwd));
-	XtSetArg (arglist[2], XtNallowRootLogin, (char *) &(greet->allow_root_login));
-	XtGetValues (login, arglist, 3);
+	XtGetValues (login, arglist, 1);
 	Debug ("sessionArgument: %s\n", greet->string ? greet->string : "<NULL>");
     }
     return code;
@@ -409,11 +402,9 @@ Greet (struct display *d, struct greet_i
 
 
 static void
-FailedLogin (struct display *d, struct greet_info *greet)
+FailedLogin (struct display *d, const char *username)
 {
 #ifdef USE_SYSLOG
-    const char *username = greet->name;
-
     if (username == NULL)
 	username = "username unavailable";
 
@@ -422,10 +413,6 @@ FailedLogin (struct display *d, struct g
 	   d->name, username);
 #endif
     DrawFail (login);
-#ifndef USE_PAM
-    bzero (greet->name, strlen(greet->name));
-    bzero (greet->password, strlen(greet->password));
-#endif
 }
 
 _X_EXPORT
@@ -437,8 +424,8 @@ greet_user_rtn GreetUser(
     struct dlfuncs        *dlfuncs)
 {
     int i;
+    Arg		arglist[2];
 
-#ifdef GREET_LIB
 /*
  * These must be set before they are used.
  */
@@ -464,7 +451,7 @@ greet_user_rtn GreetUser(
     __xdm_setgrent = dlfuncs->_setgrent;
     __xdm_getgrent = dlfuncs->_getgrent;
     __xdm_endgrent = dlfuncs->_endgrent;
-# ifdef USESHADOW
+# ifdef HAVE_GETSPNAM
     __xdm_getspnam = dlfuncs->_getspnam;
 #  ifndef QNX4
     __xdm_endspent = dlfuncs->_endspent;
@@ -478,7 +465,6 @@ greet_user_rtn GreetUser(
 # ifdef USE_PAM
     __xdm_thepamhp = dlfuncs->_thepamhp;
 # endif
-#endif
 
     *dpy = InitGreet (d);
     /*
@@ -492,6 +478,12 @@ greet_user_rtn GreetUser(
 	exit (RESERVER_DISPLAY);
     }
 
+    XtSetArg (arglist[0], XtNallowNullPasswd,
+	      (char *) &(greet->allow_null_passwd));
+    XtSetArg (arglist[1], XtNallowRootLogin,
+	      (char *) &(greet->allow_root_login));
+    XtGetValues (login, arglist, 2);
+
     for (;;) {
 #ifdef USE_PAM
 
@@ -502,7 +494,6 @@ greet_user_rtn GreetUser(
 	struct myconv_data pcd		= { d, greet, NULL };
 	struct pam_conv   pc 		= { pamconv, &pcd };
 	const char *	  pam_fname;
-	char *		  username	= NULL;
 	const char *	  login_prompt;
 
 
@@ -544,8 +535,25 @@ greet_user_rtn GreetUser(
 					(*pamhp, PAM_RHOST, hostname));
 		free(hostname);
 	    }
-	} else
-	    RUN_AND_CHECK_PAM_ERROR(pam_set_item, (*pamhp, PAM_TTY, d->name));
+	} else {			/* Displaying on local host */
+	    const char *ttyname = NULL;
+
+#ifdef __sun
+	    /* Solaris PAM & auditing insist this is a device file that can
+	       be found under /dev, so we can't use the display name */
+	    char vtpath[16];
+
+	    if ((d->windowPath) && !(strchr(d->windowPath, ':'))) {
+		/* if path is simply a VT, with no intermediaries, use it */
+		snprintf(vtpath, sizeof(vtpath), "/dev/vt/%s", d->windowPath);
+		ttyname = vtpath;
+	    }
+#else
+	    /* On all other OS'es we just pass the display name for PAM_TTY */
+	    ttyname = d->name;
+#endif
+	    RUN_AND_CHECK_PAM_ERROR(pam_set_item, (*pamhp, PAM_TTY, ttyname));
+	}
 
 	if (!greet->allow_null_passwd) {
 	    pam_flags |= PAM_DISALLOW_NULL_AUTHTOK;
@@ -571,12 +579,16 @@ greet_user_rtn GreetUser(
 
 	RUN_AND_CHECK_PAM_ERROR(pam_setcred,
 				(*pamhp, 0));
-	RUN_AND_CHECK_PAM_ERROR(pam_get_item,
-				(*pamhp, PAM_USER, (void *) &username));
-	if (username != NULL) {
-	    Debug("PAM_USER: %s\n", username);
-	    greet->name = username;
-	    greet->password = NULL;
+	{
+	    char *username	= NULL;
+
+	    RUN_AND_CHECK_PAM_ERROR(pam_get_item,
+				    (*pamhp, PAM_USER, (void *) &username));
+	    if (username != NULL) {
+		Debug("PAM_USER: %s\n", username);
+		greet->name = username;
+		greet->password = NULL;
+	    }
 	}
 
       pam_done:
@@ -591,15 +603,14 @@ greet_user_rtn GreetUser(
 	    break;
 	} else {
 	    /* Try to fill in username for failed login error log */
-	    if (greet->name == NULL) {
-		if (username == NULL) {
-		    RUN_AND_CHECK_PAM_ERROR(pam_get_item,
-					    (*pamhp, PAM_USER,
-					     (void *) &username));
-		}
-		greet->name = username;
+	    char *username = greet->name;
+
+	    if (username == NULL) {
+		RUN_AND_CHECK_PAM_ERROR(pam_get_item,
+					(*pamhp, PAM_USER,
+					 (void *) &username));
 	    }
-	    FailedLogin (d, greet);
+	    FailedLogin (d, username);
 	    RUN_AND_CHECK_PAM_ERROR(pam_end,
 				    (*pamhp, pam_error));
 	}
@@ -619,7 +630,11 @@ greet_user_rtn GreetUser(
 	if (Verify (d, greet, verify))
 	    break;
 	else
-	    FailedLogin (d, greet);
+	{
+	    FailedLogin (d, greet->name);
+	    bzero (greet->name, strlen(greet->name));
+	    bzero (greet->password, strlen(greet->password));
+	}
 #endif
     }
     DeleteXloginResources (d, *dpy);

Reply via email to