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);