diff options
author | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2006-06-14 16:36:45 +0000 |
---|---|---|
committer | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2006-06-14 16:36:45 +0000 |
commit | df798b7f58237e414e738fa0bd453cf13471bf76 (patch) | |
tree | 007d7f56a3b269a406bf7baedb19097a690d1418 /loginutils/su.c | |
parent | 66e3a222cd430d5a0a371f351131f9dd63b158dc (diff) | |
download | busybox-w32-df798b7f58237e414e738fa0bd453cf13471bf76.tar.gz busybox-w32-df798b7f58237e414e738fa0bd453cf13471bf76.tar.bz2 busybox-w32-df798b7f58237e414e738fa0bd453cf13471bf76.zip |
- minor size tweak
text data bss dec hex filename
613 0 0 613 265 loginutils/su.o.orig
605 0 0 605 25d loginutils/su.o
Diffstat (limited to 'loginutils/su.c')
-rw-r--r-- | loginutils/su.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/loginutils/su.c b/loginutils/su.c index a6fcd739f..1273831ff 100644 --- a/loginutils/su.c +++ b/loginutils/su.c | |||
@@ -65,8 +65,6 @@ static void log_su (const char *successful, const char *old_user, | |||
65 | int su_main ( int argc, char **argv ) | 65 | int su_main ( int argc, char **argv ) |
66 | { | 66 | { |
67 | unsigned long flags; | 67 | unsigned long flags; |
68 | int opt_preserve; | ||
69 | int opt_loginshell; | ||
70 | char *opt_shell = 0; | 68 | char *opt_shell = 0; |
71 | char *opt_command = 0; | 69 | char *opt_command = 0; |
72 | char *opt_username = DEFAULT_USER; | 70 | char *opt_username = DEFAULT_USER; |
@@ -81,11 +79,12 @@ int su_main ( int argc, char **argv ) | |||
81 | 79 | ||
82 | flags = bb_getopt_ulflags(argc, argv, "mplc:s:", | 80 | flags = bb_getopt_ulflags(argc, argv, "mplc:s:", |
83 | &opt_command, &opt_shell); | 81 | &opt_command, &opt_shell); |
84 | opt_preserve = flags & 3; | 82 | #define SU_OPT_m (3) |
85 | opt_loginshell = (flags & 4 ? 1 : 0); | 83 | #define SU_OPT_p (3) |
84 | #define SU_OPT_l (4) | ||
86 | 85 | ||
87 | if (optind < argc && argv[optind][0] == '-' && argv[optind][1] == 0) { | 86 | if (optind < argc && argv[optind][0] == '-' && argv[optind][1] == 0) { |
88 | opt_loginshell = 1; | 87 | flags |= SU_OPT_l; |
89 | ++optind; | 88 | ++optind; |
90 | } | 89 | } |
91 | 90 | ||
@@ -137,7 +136,7 @@ int su_main ( int argc, char **argv ) | |||
137 | closelog(); | 136 | closelog(); |
138 | #endif | 137 | #endif |
139 | 138 | ||
140 | if ( !opt_shell && opt_preserve ) | 139 | if ( !opt_shell && (flags & SU_OPT_p)) |
141 | opt_shell = getenv ( "SHELL" ); | 140 | opt_shell = getenv ( "SHELL" ); |
142 | 141 | ||
143 | if ( opt_shell && cur_uid && restricted_shell ( pw->pw_shell )) { | 142 | if ( opt_shell && cur_uid && restricted_shell ( pw->pw_shell )) { |
@@ -153,11 +152,11 @@ int su_main ( int argc, char **argv ) | |||
153 | opt_shell = pw->pw_shell; | 152 | opt_shell = pw->pw_shell; |
154 | 153 | ||
155 | change_identity ( pw ); | 154 | change_identity ( pw ); |
156 | setup_environment ( opt_shell, opt_loginshell, !opt_preserve, pw ); | 155 | setup_environment(opt_shell, flags & SU_OPT_l, !(flags & SU_OPT_p), pw); |
157 | #if ENABLE_SELINUX | 156 | #if ENABLE_SELINUX |
158 | set_current_security_context(NULL); | 157 | set_current_security_context(NULL); |
159 | #endif | 158 | #endif |
160 | run_shell ( opt_shell, opt_loginshell, opt_command, (const char**)opt_args); | 159 | run_shell(opt_shell, flags & SU_OPT_l, opt_command, (const char**)opt_args); |
161 | 160 | ||
162 | return EXIT_FAILURE; | 161 | return EXIT_FAILURE; |
163 | } | 162 | } |