Ahem: add new faq entry to list at top of FAQ.html
[oweals/busybox.git] / loginutils / su.c
index 04c213e4e9c0d86035834f98dd4538c7b5b323d7..3e82d2428c417ebf40100ebae402ce2e22bc5a38 100644 (file)
@@ -21,7 +21,6 @@
 
 
 /* The shell to run if none is given in the user's passwd entry.  */
-#define DEFAULT_SHELL "/bin/sh"
 #define DEFAULT_USER  "root"
 
 //#define SYSLOG_SUCCESS
@@ -85,14 +84,14 @@ int su_main ( int argc, char **argv )
     }
 
        /* get user if specified */
-       if ( optind < argc ) 
+       if ( optind < argc )
                opt_username = argv [optind++];
 
        if ( optind < argc )
                opt_args = argv + optind;
-               
+
 #if defined( SYSLOG_SUCCESS ) || defined( SYSLOG_FAILURE )
-#ifdef CONFIG_FEATURE_U_W_TMP
+#ifdef CONFIG_FEATURE_UTMP
        /* The utmp entry (via getlogin) is probably the best way to identify
           the user, especially if someone su's from a su-shell.  */
        old_user = getlogin ( );
@@ -109,11 +108,11 @@ int su_main ( int argc, char **argv )
 
        openlog ( bb_applet_name, 0, LOG_AUTH );
 #endif
-               
+
        pw = getpwnam ( opt_username );
        if ( !pw )
                bb_error_msg_and_die ( "user %s does not exist", opt_username );
-               
+
        /* Make sure pw->pw_shell is non-NULL.  It may be NULL when NEW_USER
           is a username that is retrieved via NIS (YP), but that doesn't have
           a default shell listed.  */
@@ -146,13 +145,12 @@ int su_main ( int argc, char **argv )
        if ( !opt_shell )
                opt_shell = pw->pw_shell;
 
-       change_identity ( pw ); 
+       change_identity ( pw );
        setup_environment ( opt_shell, opt_loginshell, !opt_preserve, pw );
-       run_shell ( opt_shell, opt_loginshell, opt_command, (const char**)opt_args
 #ifdef CONFIG_SELINUX
-       , 0
+       set_current_security_context(NULL);
 #endif
-       );
-       
+       run_shell ( opt_shell, opt_loginshell, opt_command, (const char**)opt_args);
+
        return EXIT_FAILURE;
 }