← Commit list

ca82b5354

Ron Yorston
Ron Yorston
2018-11-01
SUCCESS Duration: 148s

Subject

ash: in tryexec(), ensure we don't try to run embedded scripts as applets

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

shell/ash.c+8 -0
@@ -8017,6 +8017,10 @@ tryexec(IF_FEATURE_SH_STANDALONE(int applet_no,) const char *cmd, char **argv, c
{
#if ENABLE_FEATURE_SH_STANDALONE
if (applet_no >= 0) {
+# if NUM_SCRIPTS > 0
+ if (applet_no >= NUM_APPLETS)
+ goto run_script;
+# endif
if (APPLET_IS_NOEXEC(applet_no)) {
clearenv();
while (*envp)
@@ -8039,7 +8043,11 @@ tryexec(IF_FEATURE_SH_STANDALONE(int applet_no,) const char *cmd, char **argv, c
#else
execve(cmd, argv, envp);
#endif
+
if (cmd != bb_busybox_exec_path && errno == ENOEXEC) {
+#if ENABLE_FEATURE_SH_STANDALONE && NUM_SCRIPTS > 0
+ run_script:
+#endif
/* Run "cmd" as a shell script:
* http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html
* "If the execve() function fails with ENOEXEC, the shell