summaryrefslogtreecommitdiffstats
path: root/package/bash/bash32-015
diff options
context:
space:
mode:
Diffstat (limited to 'package/bash/bash32-015')
-rw-r--r--package/bash/bash32-01595
1 files changed, 95 insertions, 0 deletions
diff --git a/package/bash/bash32-015 b/package/bash/bash32-015
new file mode 100644
index 000000000..d887f6e56
--- /dev/null
+++ b/package/bash/bash32-015
@@ -0,0 +1,95 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 3.2
+Patch-ID: bash32-015
+
+Bug-Reported-by:
+Bug-Reference-ID:
+Bug-Reference-URL:
+
+Bug-Description:
+
+Under certain circumstances, when using FIFOs for process substitution,
+bash fails to unlink the FIFOs. This leaves open file descriptors that
+can cause the shell to hang and litters the file system.
+
+Patch:
+
+*** ../bash-3.2-patched/execute_cmd.c Fri Mar 2 16:20:50 2007
+--- execute_cmd.c Wed Jan 31 23:12:06 2007
+***************
+*** 3051,3054 ****
+--- 3051,3059 ----
+ command_line = savestring (the_printed_command_except_trap);
+
++ #if defined (PROCESS_SUBSTITUTION)
++ if ((subshell_environment & SUBSHELL_COMSUB) && (simple_command->flags & CMD_NO_FORK) && fifos_pending() > 0)
++ simple_command->flags &= ~CMD_NO_FORK;
++ #endif
++
+ execute_disk_command (words, simple_command->redirects, command_line,
+ pipe_in, pipe_out, async, fds_to_close,
+*** ../bash-3.2-patched/subst.c Fri Mar 2 16:20:50 2007
+--- subst.c Tue Mar 6 11:40:55 2007
+***************
+*** 4129,4132 ****
+--- 4151,4160 ----
+ }
+
++ int
++ fifos_pending ()
++ {
++ return nfifo;
++ }
++
+ static char *
+ make_named_pipe ()
+***************
+*** 4178,4181 ****
+--- 4206,4215 ----
+ }
+
++ int
++ fifos_pending ()
++ {
++ return 0; /* used for cleanup; not needed with /dev/fd */
++ }
++
+ void
+ unlink_fifo_list ()
+***************
+*** 4671,4674 ****
+--- 4719,4725 ----
+ last_command_exit_value = rc;
+ rc = run_exit_trap ();
++ #if defined (PROCESS_SUBSTITUTION)
++ unlink_fifo_list ();
++ #endif
+ exit (rc);
+ }
+*** ../bash-3.2-patched/subst.h Tue Sep 19 08:34:41 2006
+--- subst.h Wed Jan 10 09:46:47 2007
+***************
+*** 223,226 ****
+--- 223,227 ----
+ extern char *pat_subst __P((char *, char *, char *, int));
+
++ extern int fifos_pending __P((void));
+ extern void unlink_fifo_list __P((void));
+
+*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
+--- patchlevel.h Mon Oct 16 14:22:54 2006
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 14
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 15
+
+ #endif /* _PATCHLEVEL_H_ */