96 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 			     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_ */
 |