13 Under certain circumstances, when using FIFOs for process substitution,
14 bash fails to unlink the FIFOs. This leaves open file descriptors that
15 can cause the shell to hang and litters the file system.
19 *** ../bash-3.2-patched/execute_cmd.c Fri Mar 2 16:20:50 2007
20 --- execute_cmd.c Wed Jan 31 23:12:06 2007
24 command_line = savestring (the_printed_command_except_trap);
26 + #if defined (PROCESS_SUBSTITUTION)
27 + if ((subshell_environment & SUBSHELL_COMSUB) && (simple_command->flags & CMD_NO_FORK) && fifos_pending() > 0)
28 + simple_command->flags &= ~CMD_NO_FORK;
31 execute_disk_command (words, simple_command->redirects, command_line,
32 pipe_in, pipe_out, async, fds_to_close,
33 *** ../bash-3.2-patched/subst.c Fri Mar 2 16:20:50 2007
34 --- subst.c Tue Mar 6 11:40:55 2007
56 + return 0; /* used for cleanup; not needed with /dev/fd */
64 last_command_exit_value = rc;
65 rc = run_exit_trap ();
66 + #if defined (PROCESS_SUBSTITUTION)
67 + unlink_fifo_list ();
71 *** ../bash-3.2-patched/subst.h Tue Sep 19 08:34:41 2006
72 --- subst.h Wed Jan 10 09:46:47 2007
76 extern char *pat_subst __P((char *, char *, char *, int));
78 + extern int fifos_pending __P((void));
79 extern void unlink_fifo_list __P((void));
81 *** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
82 --- patchlevel.h Mon Oct 16 14:22:54 2006
85 looks for to find the patch level (for the sccs version string). */
87 ! #define PATCHLEVEL 14
89 #endif /* _PATCHLEVEL_H_ */
91 looks for to find the patch level (for the sccs version string). */
93 ! #define PATCHLEVEL 15
95 #endif /* _PATCHLEVEL_H_ */