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

Reply via email to