summaryrefslogtreecommitdiff
path: root/greeter
diff options
context:
space:
mode:
authorAlan Coopersmith <Alan.Coopersmith@sun.com>2006-04-14 20:17:31 +0000
committerAlan Coopersmith <Alan.Coopersmith@sun.com>2006-04-14 20:17:31 +0000
commit1ba990f121143be61eedc530f15ad30ca4d1742f (patch)
treee6d4395465d74929716581a77a58a9323044ba21 /greeter
parentaa1a1388081db6f1592db823c69bd699ca172683 (diff)
<http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6413255> Sun
bug #6413255: xdm should check for uid 0, not for username of "root", when doing non-console login check
Diffstat (limited to 'greeter')
-rw-r--r--greeter/verify.c34
1 files changed, 17 insertions, 17 deletions
diff --git a/greeter/verify.c b/greeter/verify.c
index 1e82da2..c4d1546 100644
--- a/greeter/verify.c
+++ b/greeter/verify.c
@@ -1,5 +1,5 @@
/* $Xorg: verify.c,v 1.4 2001/02/09 02:05:41 xorgcvs Exp $ */
-/* $XdotOrg: app/xdm/greeter/verify.c,v 1.6 2005/11/08 06:33:32 jkj Exp $ */
+/* $XdotOrg: app/xdm/greeter/verify.c,v 1.7 2006/03/01 15:48:06 mhopf Exp $ */
/*
Copyright 1988, 1998 The Open Group
@@ -412,13 +412,22 @@ Verify (struct display *d, struct greet_info *greet, struct verify_info *verify)
Debug ("Verify %s ...\n", greet->name);
+ p = getpwnam (greet->name);
+ endpwent();
+
+ if (!p || strlen (greet->name) == 0) {
+ Debug ("getpwnam() failed.\n");
+ bzero(greet->password, strlen(greet->password));
+ return 0;
+ }
+
#if defined(sun) && defined(SVR4)
/* Solaris: If CONSOLE is set to /dev/console in /etc/default/login,
then root can only login on system console */
# define SOLARIS_LOGIN_DEFAULTS "/etc/default/login"
- if (strcmp(greet->name, "root") == 0) {
+ if (p->pw_uid == 0) {
char *console = NULL, *tmp = NULL;
FILE *fs;
@@ -453,24 +462,15 @@ Verify (struct display *d, struct greet_info *greet, struct verify_info *verify)
#endif
#ifndef USE_PAM
- p = getpwnam (greet->name);
- endpwent();
-
- if (!p || strlen (greet->name) == 0) {
- Debug ("getpwnam() failed.\n");
- bzero(greet->password, strlen(greet->password));
- return 0;
- } else {
#ifdef linux
- if (!strcmp(p->pw_passwd, "!") || !strcmp(p->pw_passwd, "*")) {
- Debug ("The account is locked, no login allowed.\n");
- bzero(greet->password, strlen(greet->password));
- return 0;
- }
-#endif
- user_pass = p->pw_passwd;
+ if (!strcmp(p->pw_passwd, "!") || !strcmp(p->pw_passwd, "*")) {
+ Debug ("The account is locked, no login allowed.\n");
+ bzero(greet->password, strlen(greet->password));
+ return 0;
}
#endif
+ user_pass = p->pw_passwd;
+#endif
#ifdef KERBEROS
if(strcmp(greet->name, "root") != 0){
char name[ANAME_SZ];