diff options
| author | Denys Vlasenko <vda.linux@googlemail.com> | 2022-01-13 01:38:47 +0100 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2022-01-13 01:38:47 +0100 |
| commit | 96771ec5f5fb81b479973fbd25af48c5cb83b2bb (patch) | |
| tree | 9f5e5122d502b67f449e2af5c6d5d390dea90cb9 | |
| parent | 68b402ee51f12f8c3b11638b042f57e025359faf (diff) | |
| download | busybox-w32-96771ec5f5fb81b479973fbd25af48c5cb83b2bb.tar.gz busybox-w32-96771ec5f5fb81b479973fbd25af48c5cb83b2bb.tar.bz2 busybox-w32-96771ec5f5fb81b479973fbd25af48c5cb83b2bb.zip | |
sulogin: start _login_ shell only with -p
Also, shorten/eliminate messages to be closer to util-linux.
function old new delta
packed_usage 34233 34238 +5
sulogin_main 340 341 +1
.rodata 104380 104327 -53
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/1 up/down: 6/-53) Total: -47 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| -rw-r--r-- | loginutils/sulogin.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/loginutils/sulogin.c b/loginutils/sulogin.c index 2f87c77c0..56b88c086 100644 --- a/loginutils/sulogin.c +++ b/loginutils/sulogin.c | |||
| @@ -20,7 +20,8 @@ | |||
| 20 | //usage: "[-t N] [TTY]" | 20 | //usage: "[-t N] [TTY]" |
| 21 | //usage:#define sulogin_full_usage "\n\n" | 21 | //usage:#define sulogin_full_usage "\n\n" |
| 22 | //usage: "Single user login\n" | 22 | //usage: "Single user login\n" |
| 23 | //usage: "\n -t N Timeout" | 23 | //usage: "\n -p Start a login shell" |
| 24 | //usage: "\n -t SEC Timeout" | ||
| 24 | 25 | ||
| 25 | #include "libbb.h" | 26 | #include "libbb.h" |
| 26 | #include <syslog.h> | 27 | #include <syslog.h> |
| @@ -30,6 +31,7 @@ int sulogin_main(int argc UNUSED_PARAM, char **argv) | |||
| 30 | { | 31 | { |
| 31 | int tsid; | 32 | int tsid; |
| 32 | int timeout = 0; | 33 | int timeout = 0; |
| 34 | unsigned opts; | ||
| 33 | struct passwd *pwd; | 35 | struct passwd *pwd; |
| 34 | const char *shell; | 36 | const char *shell; |
| 35 | 37 | ||
| @@ -44,7 +46,7 @@ int sulogin_main(int argc UNUSED_PARAM, char **argv) | |||
| 44 | logmode = LOGMODE_BOTH; | 46 | logmode = LOGMODE_BOTH; |
| 45 | openlog(applet_name, 0, LOG_AUTH); | 47 | openlog(applet_name, 0, LOG_AUTH); |
| 46 | 48 | ||
| 47 | getopt32(argv, "t:+", &timeout); | 49 | opts = getopt32(argv, "pt:+", &timeout); |
| 48 | argv += optind; | 50 | argv += optind; |
| 49 | 51 | ||
| 50 | if (argv[0]) { | 52 | if (argv[0]) { |
| @@ -64,8 +66,8 @@ int sulogin_main(int argc UNUSED_PARAM, char **argv) | |||
| 64 | int r; | 66 | int r; |
| 65 | 67 | ||
| 66 | r = ask_and_check_password_extended(pwd, timeout, | 68 | r = ask_and_check_password_extended(pwd, timeout, |
| 67 | "Give root password for system maintenance\n" | 69 | "Give root password for maintenance\n" |
| 68 | "(or type Control-D for normal startup):" | 70 | "(or type Ctrl-D to continue): " |
| 69 | ); | 71 | ); |
| 70 | if (r < 0) { | 72 | if (r < 0) { |
| 71 | /* ^D, ^C, timeout, or read error */ | 73 | /* ^D, ^C, timeout, or read error */ |
| @@ -79,7 +81,8 @@ int sulogin_main(int argc UNUSED_PARAM, char **argv) | |||
| 79 | bb_simple_info_msg("Login incorrect"); | 81 | bb_simple_info_msg("Login incorrect"); |
| 80 | } | 82 | } |
| 81 | 83 | ||
| 82 | bb_simple_info_msg("starting shell for system maintenance"); | 84 | /* util-linux 2.36.1 compat: no message */ |
| 85 | /*bb_simple_info_msg("starting shell for system maintenance");*/ | ||
| 83 | 86 | ||
| 84 | IF_SELINUX(renew_current_security_context()); | 87 | IF_SELINUX(renew_current_security_context()); |
| 85 | 88 | ||
| @@ -116,6 +119,6 @@ int sulogin_main(int argc UNUSED_PARAM, char **argv) | |||
| 116 | */ | 119 | */ |
| 117 | /*signal(SIGINT, SIG_DFL);*/ | 120 | /*signal(SIGINT, SIG_DFL);*/ |
| 118 | 121 | ||
| 119 | /* Exec login shell with no additional parameters. Never returns. */ | 122 | /* Exec shell with no additional parameters. Never returns. */ |
| 120 | exec_login_shell(shell); | 123 | exec_shell(shell, /* -p? then shell is login:*/(opts & 1), NULL); |
| 121 | } | 124 | } |
