summaryrefslogtreecommitdiffstats
path: root/SOURCES/bash-3.2-longjmp.dif
blob: cb5ed4fc44e5310d70b457e31c7febebac3867ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Index: execute_cmd.c
===================================================================
--- execute_cmd.c.orig
+++ execute_cmd.c
@@ -25,6 +25,7 @@
 #endif /* _AIX && RISC6000 && !__GNUC__ */
 
 #include <stdio.h>
+#include <paths.h>
 #include "chartypes.h"
 #include "bashtypes.h"
 #if !defined (_MINIX) && defined (HAVE_SYS_FILE_H)
@@ -4764,6 +4765,23 @@ shell_execve (command, args, env)
   /* We have committed to attempting to execute the contents of this file
      as shell commands. */
 
+#if 1
+  larray = strvec_len(args) + 1;
+  args = strvec_resize(args, larray + 1);
+
+  for (i = larray - 1; i; i--)
+    args[i] = args[i - 1];
+
+  args[0] = savestring(_PATH_BSHELL);
+  args[1] = command;
+  args[larray] = (char *)0;
+
+  SETOSTYPE (0);		/* Some systems use for USG/POSIX semantics */
+  execve ("/bin/sh", args, env);
+  SETOSTYPE (1);
+
+  internal_error (_("%s: cannot execute: %s"), command, strerror (errno));
+#else
   initialize_subshell ();
 
   set_sigint_handler ();
@@ -4806,6 +4824,8 @@ shell_execve (command, args, env)
 
   longjmp (subshell_top_level, 1);
   /*NOTREACHED*/
+#endif
+  return (EX_NOEXEC);
 }
 
 static int