On 27/02/2020 08:40, Ron Yorston wrote:
@@ -8692,6 +8691,7 @@ fill_arglist(struct arglist *arglist, union node **argpp) return *lastp; }+#if ENABLE_ASH_CMDCMD/* Is it "command [-p] PROG ARGS" bltin, no other opts? Return ptr to "PROG" if yes */ static int parse_command_args(struct arglist *arglist, union node **argpp, const char **path) @@ -10190,12 +10190,14 @@ evalcommand(union node *cmd, int flags) vlocal = !spclbltin; } cmd_is_exec = cmdentry.u.cmd == EXECCMD; +#if ENABLE_ASH_CMDCMD if (cmdentry.u.cmd != COMMANDCMD) break;cmd_flag = parse_command_args(&arglist, &argp, &path);if (!cmd_flag) break; +#endif
There needs to be a break statement when !ENABLE_ASH_CMDCMD, whether by moving the #endif up one line or adding an #else. Without that, you get an infinite loop as seen with e.g. ash -c true.
Cheers, Harald van Dijk _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
