aboutsummaryrefslogtreecommitdiff
path: root/loginutils
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2007-09-10 13:15:28 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2007-09-10 13:15:28 +0000
commita2f61012b6f93473ed002e6609557cb1cd81b7dd (patch)
tree51ce422afbda2249a5de22e834ed04e200e0961f /loginutils
parentac074b3f87cc22c2ddadb074d630156fea720744 (diff)
downloadbusybox-w32-a2f61012b6f93473ed002e6609557cb1cd81b7dd.tar.gz
busybox-w32-a2f61012b6f93473ed002e6609557cb1cd81b7dd.tar.bz2
busybox-w32-a2f61012b6f93473ed002e6609557cb1cd81b7dd.zip
setup_environment: code shrink
run_shell: mark as NORETURN setup_environment, run_shell: add usage comments login: add FIXME :( function old new delta UNSPEC_print 64 66 +2 sulogin_main 509 506 -3 mkfs_minix_main 3070 3067 -3 login_main 1615 1612 -3 su_main 461 448 -13 setup_environment 261 206 -55 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/5 up/down: 2/-77) Total: -75 bytes text data bss dec hex filename 772578 1051 10724 784353 bf7e1 busybox_old 772502 1051 10724 784277 bf795 busybox_unstripped
Diffstat (limited to 'loginutils')
-rw-r--r--loginutils/login.c7
-rw-r--r--loginutils/su.c7
-rw-r--r--loginutils/sulogin.c7
3 files changed, 13 insertions, 8 deletions
diff --git a/loginutils/login.c b/loginutils/login.c
index 5d5053840..7f8907543 100644
--- a/loginutils/login.c
+++ b/loginutils/login.c
@@ -432,7 +432,9 @@ int login_main(int argc, char **argv)
432 tmp = pw->pw_shell; 432 tmp = pw->pw_shell;
433 if (!tmp || !*tmp) 433 if (!tmp || !*tmp)
434 tmp = DEFAULT_SHELL; 434 tmp = DEFAULT_SHELL;
435 /* setup_environment params: shell, loginshell, changeenv, pw */
435 setup_environment(tmp, 1, !(opt & LOGIN_OPT_p), pw); 436 setup_environment(tmp, 1, !(opt & LOGIN_OPT_p), pw);
437 /* FIXME: login shell = 1 -> 3rd parameter is ignored! */
436 438
437 motd(); 439 motd();
438 440
@@ -463,7 +465,8 @@ int login_main(int argc, char **argv)
463 * should it leave SIGINT etc enabled or disabled? */ 465 * should it leave SIGINT etc enabled or disabled? */
464 signal(SIGINT, SIG_DFL); 466 signal(SIGINT, SIG_DFL);
465 467
466 run_shell(tmp, 1, 0, 0); /* exec the shell finally */ 468 /* Exec login shell with no additional parameters */
469 run_shell(tmp, 1, NULL, NULL);
467 470
468 return EXIT_FAILURE; 471 /* return EXIT_FAILURE; - not reached */
469} 472}
diff --git a/loginutils/su.c b/loginutils/su.c
index b4681fb6a..123907e28 100644
--- a/loginutils/su.c
+++ b/loginutils/su.c
@@ -36,7 +36,7 @@ int su_main(int argc, char **argv)
36 /* get user if specified */ 36 /* get user if specified */
37 if (argc) { 37 if (argc) {
38 opt_username = argv[0]; 38 opt_username = argv[0];
39// argc--; 39 //argc--; - not used below anyway
40 argv++; 40 argv++;
41 } 41 }
42 42
@@ -86,18 +86,19 @@ int su_main(int argc, char **argv)
86 compromise the account by allowing access with a standard 86 compromise the account by allowing access with a standard
87 shell. */ 87 shell. */
88 bb_error_msg("using restricted shell"); 88 bb_error_msg("using restricted shell");
89 opt_shell = 0; 89 opt_shell = NULL;
90 } 90 }
91#endif 91#endif
92 if (!opt_shell) 92 if (!opt_shell)
93 opt_shell = pw->pw_shell; 93 opt_shell = pw->pw_shell;
94 94
95 change_identity(pw); 95 change_identity(pw);
96 /* setup_environment params: shell, loginshell, changeenv, pw */
96 setup_environment(opt_shell, flags & SU_OPT_l, !(flags & SU_OPT_mp), pw); 97 setup_environment(opt_shell, flags & SU_OPT_l, !(flags & SU_OPT_mp), pw);
97 USE_SELINUX(set_current_security_context(NULL);) 98 USE_SELINUX(set_current_security_context(NULL);)
98 99
99 /* Never returns */ 100 /* Never returns */
100 run_shell(opt_shell, flags & SU_OPT_l, opt_command, (const char**)argv); 101 run_shell(opt_shell, flags & SU_OPT_l, opt_command, (const char**)argv);
101 102
102 return EXIT_FAILURE; 103 /* return EXIT_FAILURE; - not reached */
103} 104}
diff --git a/loginutils/sulogin.c b/loginutils/sulogin.c
index 5f0a4081d..5c73bda93 100644
--- a/loginutils/sulogin.c
+++ b/loginutils/sulogin.c
@@ -112,14 +112,15 @@ int sulogin_main(int argc, char **argv)
112 USE_SELINUX(renew_current_security_context()); 112 USE_SELINUX(renew_current_security_context());
113 113
114 shell = getenv("SUSHELL"); 114 shell = getenv("SUSHELL");
115 if (!shell) shell = getenv("sushell"); 115 if (!shell)
116 shell = getenv("sushell");
116 if (!shell) { 117 if (!shell) {
117 shell = "/bin/sh"; 118 shell = "/bin/sh";
118 if (pwd->pw_shell[0]) 119 if (pwd->pw_shell[0])
119 shell = pwd->pw_shell; 120 shell = pwd->pw_shell;
120 } 121 }
121 run_shell(shell, 1, 0, 0); 122 /* Exec login shell with no additional parameters. Never returns. */
122 /* never returns */ 123 run_shell(shell, 1, NULL, NULL);
123 124
124auth_error: 125auth_error:
125 bb_error_msg_and_die("no password entry for 'root'"); 126 bb_error_msg_and_die("no password entry for 'root'");