svashisht / rpms / bash

Forked from rpms/bash 6 years ago
Clone
Ondrej Oprala 6faef2f
			     BASH PATCH REPORT
Ondrej Oprala 6faef2f
			     =================
Ondrej Oprala 6faef2f
Ondrej Oprala 6faef2f
Bash-Release:	4.3
Ondrej Oprala 6faef2f
Patch-ID:	bash43-023
Ondrej Oprala 6faef2f
Ondrej Oprala 6faef2f
Bug-Reported-by:	Tim Friske <me@timfriske.com>
Ondrej Oprala 6faef2f
Bug-Reference-ID:	<CAM1RzOcOR9zzC2i+aeES6LtbHNHoOV+0pZEYPrqxv_QAii-RXA@mail.gmail.com>
Ondrej Oprala 6faef2f
Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00056.html
Ondrej Oprala 6faef2f
Ondrej Oprala 6faef2f
Bug-Description:
Ondrej Oprala 6faef2f
Ondrej Oprala 6faef2f
Bash does not correctly parse process substitution constructs that contain
Ondrej Oprala 6faef2f
unbalanced parentheses as part of the contained command.
Ondrej Oprala 6faef2f
Ondrej Oprala 6faef2f
Patch (apply with `patch -p0'):
Ondrej Oprala 6faef2f
Ondrej Oprala 6faef2f
*** ../bash-4.3-patched/subst.h	2014-01-11 21:02:27.000000000 -0500
Ondrej Oprala 6faef2f
--- subst.h	2014-07-20 17:25:01.000000000 -0400
Ondrej Oprala 6faef2f
***************
Ondrej Oprala 6faef2f
*** 83,87 ****
Ondrej Oprala 6faef2f
     Start extracting at (SINDEX) as if we had just seen "<(".
Ondrej Oprala 6faef2f
     Make (SINDEX) get the position just after the matching ")". */
Ondrej Oprala 6faef2f
! extern char *extract_process_subst __P((char *, char *, int *));
Ondrej Oprala 6faef2f
  #endif /* PROCESS_SUBSTITUTION */
Ondrej Oprala 6faef2f
  
Ondrej Oprala 6faef2f
--- 83,87 ----
Ondrej Oprala 6faef2f
     Start extracting at (SINDEX) as if we had just seen "<(".
Ondrej Oprala 6faef2f
     Make (SINDEX) get the position just after the matching ")". */
Ondrej Oprala 6faef2f
! extern char *extract_process_subst __P((char *, char *, int *, int));
Ondrej Oprala 6faef2f
  #endif /* PROCESS_SUBSTITUTION */
Ondrej Oprala 6faef2f
  
Ondrej Oprala 6faef2f
*** ../bash-4.3-patched/subst.c	2014-05-15 08:26:45.000000000 -0400
Ondrej Oprala 6faef2f
--- subst.c	2014-07-20 17:26:44.000000000 -0400
Ondrej Oprala 6faef2f
***************
Ondrej Oprala 6faef2f
*** 1193,1202 ****
Ondrej Oprala 6faef2f
     Make (SINDEX) get the position of the matching ")". */ /*))*/
Ondrej Oprala 6faef2f
  char *
Ondrej Oprala 6faef2f
! extract_process_subst (string, starter, sindex)
Ondrej Oprala 6faef2f
       char *string;
Ondrej Oprala 6faef2f
       char *starter;
Ondrej Oprala 6faef2f
       int *sindex;
Ondrej Oprala 6faef2f
  {
Ondrej Oprala 6faef2f
    return (extract_delimited_string (string, sindex, starter, "(", ")", SX_COMMAND));
Ondrej Oprala 6faef2f
  }
Ondrej Oprala 6faef2f
  #endif /* PROCESS_SUBSTITUTION */
Ondrej Oprala 6faef2f
--- 1193,1208 ----
Ondrej Oprala 6faef2f
     Make (SINDEX) get the position of the matching ")". */ /*))*/
Ondrej Oprala 6faef2f
  char *
Ondrej Oprala 6faef2f
! extract_process_subst (string, starter, sindex, xflags)
Ondrej Oprala 6faef2f
       char *string;
Ondrej Oprala 6faef2f
       char *starter;
Ondrej Oprala 6faef2f
       int *sindex;
Ondrej Oprala 6faef2f
+      int xflags;
Ondrej Oprala 6faef2f
  {
Ondrej Oprala 6faef2f
+ #if 0
Ondrej Oprala 6faef2f
    return (extract_delimited_string (string, sindex, starter, "(", ")", SX_COMMAND));
Ondrej Oprala 6faef2f
+ #else
Ondrej Oprala 6faef2f
+   xflags |= (no_longjmp_on_fatal_error ? SX_NOLONGJMP : 0);
Ondrej Oprala 6faef2f
+   return (xparse_dolparen (string, string+*sindex, sindex, xflags));
Ondrej Oprala 6faef2f
+ #endif
Ondrej Oprala 6faef2f
  }
Ondrej Oprala 6faef2f
  #endif /* PROCESS_SUBSTITUTION */
Ondrej Oprala 6faef2f
***************
Ondrej Oprala 6faef2f
*** 1786,1790 ****
Ondrej Oprala 6faef2f
  	  if (string[si] == '\0')
Ondrej Oprala 6faef2f
  	    CQ_RETURN(si);
Ondrej Oprala 6faef2f
! 	  temp = extract_process_subst (string, (c == '<') ? "<(" : ">(", &si);
Ondrej Oprala 6faef2f
  	  free (temp);		/* no SX_ALLOC here */
Ondrej Oprala 6faef2f
  	  i = si;
Ondrej Oprala 6faef2f
--- 1792,1796 ----
Ondrej Oprala 6faef2f
  	  if (string[si] == '\0')
Ondrej Oprala 6faef2f
  	    CQ_RETURN(si);
Ondrej Oprala 6faef2f
! 	  temp = extract_process_subst (string, (c == '<') ? "<(" : ">(", &si, 0);
Ondrej Oprala 6faef2f
  	  free (temp);		/* no SX_ALLOC here */
Ondrej Oprala 6faef2f
  	  i = si;
Ondrej Oprala 6faef2f
***************
Ondrej Oprala 6faef2f
*** 8250,8254 ****
Ondrej Oprala 6faef2f
  	      t_index = sindex + 1; /* skip past both '<' and LPAREN */
Ondrej Oprala 6faef2f
  
Ondrej Oprala 6faef2f
! 	    temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index); /*))*/
Ondrej Oprala 6faef2f
  	    sindex = t_index;
Ondrej Oprala 6faef2f
  
Ondrej Oprala 6faef2f
--- 8256,8260 ----
Ondrej Oprala 6faef2f
  	      t_index = sindex + 1; /* skip past both '<' and LPAREN */
Ondrej Oprala 6faef2f
  
Ondrej Oprala 6faef2f
! 	    temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index, 0); /*))*/
Ondrej Oprala 6faef2f
  	    sindex = t_index;
Ondrej Oprala 6faef2f
  
Ondrej Oprala 6faef2f
*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
Ondrej Oprala 6faef2f
--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
Ondrej Oprala 6faef2f
***************
Ondrej Oprala 6faef2f
*** 26,30 ****
Ondrej Oprala 6faef2f
     looks for to find the patch level (for the sccs version string). */
Ondrej Oprala 6faef2f
  
Ondrej Oprala 6faef2f
! #define PATCHLEVEL 22
Ondrej Oprala 6faef2f
  
Ondrej Oprala 6faef2f
  #endif /* _PATCHLEVEL_H_ */
Ondrej Oprala 6faef2f
--- 26,30 ----
Ondrej Oprala 6faef2f
     looks for to find the patch level (for the sccs version string). */
Ondrej Oprala 6faef2f
  
Ondrej Oprala 6faef2f
! #define PATCHLEVEL 23
Ondrej Oprala 6faef2f
  
Ondrej Oprala 6faef2f
  #endif /* _PATCHLEVEL_H_ */