1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- 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
- --- bash-3.2/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
- --- bash-3.2/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
- --- bash-3.2/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
- --- bash-3.2/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_ */
|