You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							78 lines
						
					
					
						
							2.0 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							78 lines
						
					
					
						
							2.0 KiB
						
					
					
				| 			     BASH PATCH REPORT | |
| 			     ================= | |
| 
 | |
| Bash-Release:	4.4 | |
| Patch-ID:	bash44-016 | |
| 
 | |
| Bug-Reported-by:	Luiz Angelo Daros de Luca <luizluca@gmail.com> | |
| Bug-Reference-ID:	<CAJq09z7G1-QnLyiUQA0DS=V3da_rtHF8VdYbbdzPe_W3kydpRg@mail.gmail.com> | |
| Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2016-09/msg00092.html | |
| 
 | |
| Bug-Description: | |
| 
 | |
| Bash can perform trap processing while reading command substitution output | |
| instead of waiting until the command completes. | |
| 
 | |
| Patch (apply with `patch -p0'): | |
| 
 | |
| *** ../bash-4.4/lib/sh/zread.c	2014-12-22 10:48:04.000000000 -0500 | |
| --- lib/sh/zread.c	2016-09-29 15:21:36.000000000 -0400 | |
| *************** | |
| *** 38,42 **** | |
| --- 38,45 ---- | |
|   #endif | |
|    | |
| + extern int executing_builtin; | |
| +  | |
|   extern void check_signals_and_traps (void); | |
| + extern void check_signals (void); | |
|   extern int signal_is_trapped (int); | |
|    | |
| *************** | |
| *** 51,69 **** | |
|     ssize_t r; | |
|    | |
| - #if 0 | |
| - #if defined (HAVE_SIGINTERRUPT) | |
| -   if (signal_is_trapped (SIGCHLD)) | |
| -     siginterrupt (SIGCHLD, 1); | |
| - #endif | |
| - #endif | |
| -  | |
|     while ((r = read (fd, buf, len)) < 0 && errno == EINTR) | |
| !     check_signals_and_traps ();	/* XXX - should it be check_signals()? */ | |
| !  | |
| ! #if 0  | |
| ! #if defined (HAVE_SIGINTERRUPT) | |
| !   siginterrupt (SIGCHLD, 0); | |
| ! #endif | |
| ! #endif | |
|    | |
|     return r; | |
| --- 54,64 ---- | |
|     ssize_t r; | |
|    | |
|     while ((r = read (fd, buf, len)) < 0 && errno == EINTR) | |
| !     /* XXX - bash-5.0 */ | |
| !     /* We check executing_builtin and run traps here for backwards compatibility */ | |
| !     if (executing_builtin) | |
| !       check_signals_and_traps ();	/* XXX - should it be check_signals()? */ | |
| !     else | |
| !       check_signals (); | |
|    | |
|     return r; | |
| *** ../bash-4.4/patchlevel.h	2016-06-22 14:51:03.000000000 -0400 | |
| --- patchlevel.h	2016-10-01 11:01:28.000000000 -0400 | |
| *************** | |
| *** 26,30 **** | |
|      looks for to find the patch level (for the sccs version string). */ | |
|    | |
| ! #define PATCHLEVEL 15 | |
|    | |
|   #endif /* _PATCHLEVEL_H_ */ | |
| --- 26,30 ---- | |
|      looks for to find the patch level (for the sccs version string). */ | |
|    | |
| ! #define PATCHLEVEL 16 | |
|    | |
|   #endif /* _PATCHLEVEL_H_ */
 | |
| 
 |