OSDN Git Service

move all "-/bin/sh" "/bin/sh" and "sh" to libbb/messages.c file as one
authorGlenn L McGrath <bug1@ihug.co.nz>
Tue, 2 Sep 2003 02:36:18 +0000 (02:36 -0000)
committerGlenn L McGrath <bug1@ihug.co.nz>
Tue, 2 Sep 2003 02:36:18 +0000 (02:36 -0000)
constant.
Vodz last_patch_107

14 files changed:
coreutils/chroot.c
include/libbb.h
init/init.c
libbb/Makefile.in
libbb/messages.c
loginutils/adduser.c
loginutils/login.c
loginutils/su.c
miscutils/crond.c
miscutils/crontab.c
networking/ifupdown.c
networking/telnetd.c
shell/ash.c
shell/msh.c

index 5562e58..eeed013 100644 (file)
@@ -43,7 +43,7 @@ int chroot_main(int argc, char **argv)
        if (argc == 2) {
                argv -= 2;
                if (!(*argv = getenv("SHELL"))) {
-                       *argv = (char *) "/bin/sh";
+                       *argv = (char *) DEFAULT_SHELL;
                }
                argv[1] = (char *) "-i";
        }
index a6d9a51..6490373 100644 (file)
@@ -332,6 +332,21 @@ extern const char * const bb_path_group_file;
 extern const char * const bb_path_securetty_file;
 extern const char * const bb_path_motd_file;
 
+/*
+ * You can change LIBBB_DEFAULT_LOGIN_SHELL, but don`t use,
+ * use bb_default_login_shell and next defines,
+ * if you LIBBB_DEFAULT_LOGIN_SHELL change,
+ * don`t lose change increment constant!
+ */
+#define LIBBB_DEFAULT_LOGIN_SHELL      "-/bin/sh"
+
+extern const char * const bb_default_login_shell;
+/* "/bin/sh" */
+#define DEFAULT_SHELL     (bb_default_login_shell+1)
+/* "sh" */
+#define DEFAULT_SHELL_SHORT_NAME     (bb_default_login_shell+6)
+
+
 extern const char bb_path_mtab_file[];
 
 extern int bb_default_error_retval;
index e52517e..2f44e13 100644 (file)
@@ -104,8 +104,6 @@ struct serial_struct {
 
 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
 
-#define SHELL        "/bin/sh" /* Default shell */
-#define LOGIN_SHELL  "-" SHELL /* Default login shell */
 #define INITTAB      "/etc/inittab"    /* inittab file location */
 #ifndef INIT_SCRIPT
 #define INIT_SCRIPT  "/etc/init.d/rcS" /* Default sysinit script. */
@@ -180,7 +178,7 @@ static const int RB_AUTOBOOT = 0x01234567;
 static const char * const environment[] = {
        "HOME=/",
        "PATH=" _PATH_STDPATH,
-       "SHELL=" SHELL,
+       "SHELL=/bin/sh",
        "USER=root",
        NULL
 };
@@ -526,7 +524,7 @@ static pid_t run(const struct init_action *a)
 
                /* See if any special /bin/sh requiring characters are present */
                if (strpbrk(a->command, "~`!$^&*()=|\\{}[];\"'<>?") != NULL) {
-                       cmd[0] = SHELL;
+                       cmd[0] = (char *)DEFAULT_SHELL;
                        cmd[1] = "-c";
                        cmd[2] = strcat(strcpy(buf, "exec "), a->command);
                        cmd[3] = NULL;
@@ -840,7 +838,7 @@ static void child_handler(int sig)
 
 #endif                                                 /* ! DEBUG_INIT */
 
-static void new_init_action(int action, char *command, const char *cons)
+static void new_init_action(int action, const char *command, const char *cons)
 {
        struct init_action *new_action, *a;
 
@@ -960,10 +958,10 @@ static void parse_inittab(void)
                /* Prepare to restart init when a HUP is received */
                new_init_action(RESTART, "/sbin/init", "");
                /* Askfirst shell on tty1-4 */
-               new_init_action(ASKFIRST, LOGIN_SHELL, "");
-               new_init_action(ASKFIRST, LOGIN_SHELL, VC_2);
-               new_init_action(ASKFIRST, LOGIN_SHELL, VC_3);
-               new_init_action(ASKFIRST, LOGIN_SHELL, VC_4);
+               new_init_action(ASKFIRST, bb_default_login_shell, "");
+               new_init_action(ASKFIRST, bb_default_login_shell, VC_2);
+               new_init_action(ASKFIRST, bb_default_login_shell, VC_3);
+               new_init_action(ASKFIRST, bb_default_login_shell, VC_4);
                /* sysinit */
                new_init_action(SYSINIT, INIT_SCRIPT, "");
 
@@ -1116,7 +1114,7 @@ extern int init_main(int argc, char **argv)
        if (argc > 1 && (!strcmp(argv[1], "single") ||
                                         !strcmp(argv[1], "-s") || !strcmp(argv[1], "1"))) {
                /* Start a shell on console */
-               new_init_action(RESPAWN, LOGIN_SHELL, "");
+               new_init_action(RESPAWN, bb_default_login_shell, "");
        } else {
                /* Not in single user mode -- see what inittab says */
 
index 0d7103e..0ccd85d 100644 (file)
@@ -59,7 +59,7 @@ LIBBB_MOBJ0:=full_version.o \
        can_not_create_raw_socket.o perm_denied_are_you_root.o \
        shadow_file.o passwd_file.o group_file.o gshadow_file.o nologin_file.o \
        securetty_file.o motd_file.o \
-       msg_standard_input.o msg_standard_output.o
+       msg_standard_input.o msg_standard_output.o shell_file.o
 
 LIBBB_MSRC1:=$(LIBBB_DIR)xfuncs.c
 LIBBB_MOBJ1:=xmalloc.o xrealloc.o xcalloc.o xstrdup.o xstrndup.o \
index 11493db..adfd1ff 100644 (file)
@@ -90,3 +90,7 @@ const char * const bb_path_securetty_file = SECURETTY_FILE;
 const char * const bb_path_motd_file = MOTD_FILE;
 #endif
 
+#ifdef L_shell_file
+const char * const bb_default_login_shell = LIBBB_DEFAULT_LOGIN_SHELL;
+#endif
+
index 41dc9f0..c4ab557 100644 (file)
@@ -53,7 +53,6 @@ typedef struct {
 static const char default_passwd[] = "x";
 static const char default_gecos[] = "Linux User,,,";
 static const char default_home_prefix[] = "/home";
-static const char default_shell[] = "/bin/sh";
 
 #ifdef CONFIG_FEATURE_SHADOWPASSWDS
 /* shadow in use? */
@@ -257,7 +256,7 @@ int adduser_main(int argc, char **argv)
        const char *login;
        const char *gecos = default_gecos;
        const char *home = NULL;
-       const char *shell = default_shell;
+       const char *shell = DEFAULT_SHELL;
        const char *usegroup = NULL;
        int flags;
        int setpass = 1;
index c2bada2..3fca899 100644 (file)
@@ -65,7 +65,7 @@ extern int login_main(int argc, char **argv)
        char full_tty[200];
        char fromhost[512];
        char username[USERNAME_SIZE];
-       char *tmp;
+       const char *tmp;
        int amroot;
        int flag;
        int failed;
@@ -267,15 +267,17 @@ auth_ok:
        chmod ( full_tty, 0600 );
 
        change_identity ( pw );
-       setup_environment ( pw-> pw_shell, 1, !opt_preserve, pw );
+       tmp = pw-> pw_shell;
+       if(!tmp || !*tmp)
+               tmp = DEFAULT_SHELL;
+       setup_environment ( tmp, 1, !opt_preserve, pw );
 
        motd ( );
        signal ( SIGALRM, SIG_DFL );    /* default alarm signal */
 
        if ( pw-> pw_uid == 0 ) 
                syslog ( LOG_INFO, "root login %s\n", fromhost );
-       
-       run_shell ( pw-> pw_shell, 1, 0, 0
+       run_shell ( tmp, 1, 0, 0
 #ifdef CONFIG_SELINUX
        , sid
 #endif
index 04c213e..2d7a7ac 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
index f092013..637e09d 100644 (file)
@@ -54,9 +54,6 @@
 #define MAXLINES        256             /* max lines in non-root crontabs */
 #endif
 
-static const char def_sh[] = "/bin/sh";
-
-
 typedef struct CronFile {
     struct CronFile *cf_Next;
     struct CronLine *cf_LineBase;
@@ -313,7 +310,7 @@ ChangeUser(const char *user)
     }
     setenv("USER", pas->pw_name, 1);
     setenv("HOME", pas->pw_dir, 1);
-    setenv("SHELL", def_sh, 1);
+    setenv("SHELL", DEFAULT_SHELL, 1);
 
     /*
      * Change running state to the user in question
@@ -997,7 +994,7 @@ RunJob(const char *user, CronLine *line)
                        user, mailFile);
     }
 
-    ForkJob(user, line, mailFd, def_sh, "-c", line->cl_Shell, mailFile);
+    ForkJob(user, line, mailFd, DEFAULT_SHELL, "-c", line->cl_Shell, mailFile);
 }
 
 /*
@@ -1081,12 +1078,12 @@ RunJob(const char *user, CronLine *line)
 
 #ifdef FEATURE_DEBUG_OPT
        if (DebugOpt)
-           crondlog("\005Child Running %s\n", def_sh);
+           crondlog("\005Child Running %s\n", DEFAULT_SHELL);
 #endif
 
-       execl(def_sh, def_sh, "-c", line->cl_Shell, NULL);
+       execl(DEFAULT_SHELL, DEFAULT_SHELL, "-c", line->cl_Shell, NULL);
        crondlog("\024unable to exec, user %s cmd %s -c %s\n", user,
-           def_sh, line->cl_Shell);
+           DEFAULT_SHELL, line->cl_Shell);
        exit(0);
     } else if (pid < 0) {
        /*
index 6b94464..6c4da95 100644 (file)
@@ -320,7 +320,7 @@ EditFile(const char *user, const char *file)
            ptr = PATH_VI;
 
        snprintf(visual, sizeof(visual), "%s %s", ptr, file);
-       execl("/bin/sh", "/bin/sh", "-c", visual, NULL);
+       execl(DEFAULT_SHELL, DEFAULT_SHELL, "-c", visual, NULL);
        perror("exec");
        exit(0);
     }
@@ -360,7 +360,7 @@ ChangeUser(const char *user, short dochdir)
     }
     setenv("USER", pas->pw_name, 1);
     setenv("HOME", pas->pw_dir, 1);
-    setenv("SHELL", "/bin/sh", 1);
+    setenv("SHELL", DEFAULT_SHELL, 1);
 
     /*
      * Change running state to the user in question
index 78f2bb0..1a23bac 100644 (file)
@@ -1009,7 +1009,7 @@ static int doit(char *str)
                        case -1:                /* failure */
                                return 0;
                        case 0:         /* child */
-                               execle("/bin/sh", "/bin/sh", "-c", str, NULL, environ);
+                               execle(DEFAULT_SHELL, DEFAULT_SHELL, "-c", str, NULL, environ);
                                exit(127);
                }
                waitpid(child, &status, 0);
index 27b08ac..205661b 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: telnetd.c,v 1.6 2003/04/25 12:32:37 andersen Exp $
+/* $Id: telnetd.c,v 1.7 2003/09/02 02:36:16 bug1 Exp $
  *
  * Simple telnet server
  * Bjorn Wesen, Axis Communications AB (bjornw@axis.com)
@@ -52,7 +52,7 @@ static const char *loginpath =
 #ifdef CONFIG_LOGIN
 "/bin/login";
 #else
-"/bin/sh";
+DEFAULT_SHELL;
 #endif
 static const char *issuefile = "/etc/issue.net";
 
index 521d65a..59aa336 100644 (file)
@@ -3729,7 +3729,7 @@ repeat:
                for (ap = argv; *ap; ap++)
                        ;
                ap = new = ckmalloc((ap - argv + 2) * sizeof(char *));
-               *ap++ = cmd = "/bin/sh";
+               *ap++ = cmd = (char *)DEFAULT_SHELL;
                while ((*ap++ = *argv++))
                        ;
                argv = new;
index a142c45..31dd04f 100644 (file)
@@ -668,7 +668,6 @@ static char *null   = "";
 static int     heedint =1;
 static struct env e ={line, iostack, iostack-1, (xint *)NULL, FDBASE, (struct env *)NULL};
 static void (*qflag)(int) = SIG_IGN;
-static char    shellname[] = "/bin/sh";
 static int     startl;
 static int     peeksym;
 static int     nlseen;
@@ -717,7 +716,7 @@ extern int msh_main(int argc, char **argv)
 
        shell = lookup("SHELL");
        if (shell->value == null)
-               setval(shell, shellname);
+               setval(shell, DEFAULT_SHELL);
        export(shell);
 
        homedir = lookup("HOME");
@@ -2871,7 +2870,7 @@ char *c, **v, **envp;
                        *v = e.linep;
                        tp = *--v;
                        *v = e.linep;
-                       execve(shellname, v, envp);
+                       execve(DEFAULT_SHELL, v, envp);
                        *v = tp;
                        return("no Shell");
 
@@ -3902,7 +3901,7 @@ int quoted;
        dup2(pf[1], 1);
        closepipe(pf);
 
-       argument_list[0] = shellname;
+       argument_list[0] = (char *)DEFAULT_SHELL;
        argument_list[1] = "-c";
        argument_list[2] = child_cmd;
        argument_list[3] = 0;