From 8fa1f5d543266816967949812b65790fbe7cdcd4 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Thu, 15 Jul 2010 08:18:46 +0200 Subject: [PATCH] hush: fix faloout from previous commit Signed-off-by: Denys Vlasenko --- include/busybox.h | 13 ++++++++----- shell/hush.c | 26 ++++++++++++-------------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/include/busybox.h b/include/busybox.h index 48ce856ea..48fc0b4c8 100644 --- a/include/busybox.h +++ b/include/busybox.h @@ -35,18 +35,21 @@ extern const uint16_t applet_nameofs[]; extern const uint8_t applet_install_loc[]; #if ENABLE_FEATURE_SUID || ENABLE_FEATURE_PREFER_APPLETS -#define APPLET_NAME(i) (applet_names + (applet_nameofs[i] & 0x0fff)) +# define APPLET_NAME(i) (applet_names + (applet_nameofs[i] & 0x0fff)) #else -#define APPLET_NAME(i) (applet_names + applet_nameofs[i]) +# define APPLET_NAME(i) (applet_names + applet_nameofs[i]) #endif #if ENABLE_FEATURE_PREFER_APPLETS -#define APPLET_IS_NOFORK(i) (applet_nameofs[i] & (1 << 12)) -#define APPLET_IS_NOEXEC(i) (applet_nameofs[i] & (1 << 13)) +# define APPLET_IS_NOFORK(i) (applet_nameofs[i] & (1 << 12)) +# define APPLET_IS_NOEXEC(i) (applet_nameofs[i] & (1 << 13)) +#else +# define APPLET_IS_NOFORK(i) 0 +# define APPLET_IS_NOEXEC(i) 0 #endif #if ENABLE_FEATURE_SUID -#define APPLET_SUID(i) ((applet_nameofs[i] >> 14) & 0x3) +# define APPLET_SUID(i) ((applet_nameofs[i] >> 14) & 0x3) #endif #if ENABLE_FEATURE_INSTALLER diff --git a/shell/hush.c b/shell/hush.c index 8a467be80..7dacfa0b1 100644 --- a/shell/hush.c +++ b/shell/hush.c @@ -4328,9 +4328,7 @@ static NOINLINE int run_pipe(struct pipe *pi) } #endif } -#if ENABLE_FEATURE_SH_STANDALONE clean_up_and_ret: -#endif restore_redirects(squirrel); unset_vars(new_env); add_vars(old_vars); @@ -4342,20 +4340,20 @@ static NOINLINE int run_pipe(struct pipe *pi) return rcode; } -#if ENABLE_FEATURE_SH_STANDALONE - i = find_applet_by_name(argv_expanded[0]); - if (i >= 0 && APPLET_IS_NOFORK(i)) { - rcode = setup_redirects(command, squirrel); - if (rcode == 0) { - new_env = expand_assignments(argv, command->assignment_cnt); - old_vars = set_vars_and_save_old(new_env); - debug_printf_exec(": run_nofork_applet '%s' '%s'...\n", - argv_expanded[0], argv_expanded[1]); - rcode = run_nofork_applet(i, argv_expanded); + if (ENABLE_FEATURE_SH_STANDALONE) { + int n = find_applet_by_name(argv_expanded[0]); + if (n >= 0 && APPLET_IS_NOFORK(n)) { + rcode = setup_redirects(command, squirrel); + if (rcode == 0) { + new_env = expand_assignments(argv, command->assignment_cnt); + old_vars = set_vars_and_save_old(new_env); + debug_printf_exec(": run_nofork_applet '%s' '%s'...\n", + argv_expanded[0], argv_expanded[1]); + rcode = run_nofork_applet(n, argv_expanded); + } + goto clean_up_and_ret; } - goto clean_up_and_ret; } -#endif /* It is neither builtin nor applet. We must fork. */ }