svn commit: trunk/busybox/loginutils

vda at busybox.net vda at busybox.net
Sat Oct 14 11:47:02 UTC 2006


Author: vda
Date: 2006-10-14 04:47:02 -0700 (Sat, 14 Oct 2006)
New Revision: 16380

Log:
sulogin: add support for $SUSHELL & $sushell


Modified:
   trunk/busybox/loginutils/adduser.c
   trunk/busybox/loginutils/sulogin.c


Changeset:
Modified: trunk/busybox/loginutils/adduser.c
===================================================================
--- trunk/busybox/loginutils/adduser.c	2006-10-14 11:34:14 UTC (rev 16379)
+++ trunk/busybox/loginutils/adduser.c	2006-10-14 11:47:02 UTC (rev 16380)
@@ -114,11 +114,11 @@
 	file = xfopen(bb_path_shadow_file, "a");
 	fseek(file, 0, SEEK_END);
 	fprintf(file, "%s:!:%ld:%d:%d:%d:::\n",
-					p->pw_name,				/* username */
-					time(NULL) / 86400,		/* sp->sp_lstchg */ 
-					0,						/* sp->sp_min */
-					99999,					/* sp->sp_max */
-					7);						/* sp->sp_warn */
+			p->pw_name,             /* username */
+			time(NULL) / 86400,     /* sp->sp_lstchg */ 
+			0,                      /* sp->sp_min */
+			99999,                  /* sp->sp_max */
+			7);                     /* sp->sp_warn */
 	fclose(file);
 #endif
 

Modified: trunk/busybox/loginutils/sulogin.c
===================================================================
--- trunk/busybox/loginutils/sulogin.c	2006-10-14 11:34:14 UTC (rev 16379)
+++ trunk/busybox/loginutils/sulogin.c	2006-10-14 11:47:02 UTC (rev 16380)
@@ -42,6 +42,7 @@
 	const char * const *p;
 	struct passwd *pwd;
 	struct spwd *spwd;
+	const char *shell;
 
 	logmode = LOGMODE_BOTH;
 	openlog(applet_name, 0, LOG_AUTH);
@@ -69,12 +70,14 @@
 
 	signal(SIGALRM, catchalarm);
 
-	if (!(pwd = getpwuid(0))) {
+	pwd = getpwuid(0);
+	if (!pwd) {
 		goto auth_error;
 	}
 
 	if (ENABLE_FEATURE_SHADOWPASSWDS) {
-		if (!(spwd = getspnam(pwd->pw_name))) {
+		spwd = getspnam(pwd->pw_name);
+		if (!spwd) {
 			goto auth_error;
 		}
 		pwd->pw_passwd = spwd->sp_pwdp;
@@ -103,9 +106,16 @@
 
 	USE_SELINUX(renew_current_security_context());
 
-	run_shell(pwd->pw_shell, 1, 0, 0);
+	shell = getenv("SUSHELL");
+	if (!shell) shell = getenv("sushell");
+	if (!shell) {
+		shell = "/bin/sh";
+		if (pwd->pw_shell[0])
+			shell = pwd->pw_shell;
+	}
+	run_shell(shell, 1, 0, 0);
 	/* never returns */
 
 auth_error:
-	bb_error_msg_and_die("no password entry for `root'");
+	bb_error_msg_and_die("no password entry for 'root'");
 }




More information about the busybox-cvs mailing list