SOURCES: bash31-008 (NEW), bash31-009 (NEW), bash31-010 (NEW), bas...

glen glen at pld-linux.org
Mon Mar 13 17:52:15 CET 2006


Author: glen                         Date: Mon Mar 13 16:52:15 2006 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- up to 011

---- Files affected:
SOURCES:
   bash31-008 (NONE -> 1.1)  (NEW), bash31-009 (NONE -> 1.1)  (NEW), bash31-010 (NONE -> 1.1)  (NEW), bash31-011 (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/bash31-008
diff -u /dev/null SOURCES/bash31-008:1.1
--- /dev/null	Mon Mar 13 17:52:15 2006
+++ SOURCES/bash31-008	Mon Mar 13 17:52:10 2006
@@ -0,0 +1,51 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release: 3.1
+Patch-ID: bash31-008
+
+Bug-Reported-by: Ingemar Nilsson <init at kth.se>
+Bug-Reference-ID: <43C38D35.7020404 at kth.se>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-01/msg00044.html
+
+Bug-Description:
+
+In some cases, bash inappropriately allows SIGINT from the terminal to
+reach background processes.
+
+Patch:
+
+*** ../bash-3.1/jobs.c	Fri Nov 11 23:13:27 2005
+--- jobs.c	Wed Feb  1 13:55:38 2006
+***************
+*** 2199,2203 ****
+    wait_sigint_received = 0;
+    if (job_control == 0)
+!     old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
+  
+    termination_state = last_command_exit_value;
+--- 2298,2306 ----
+    wait_sigint_received = 0;
+    if (job_control == 0)
+!     {
+!       old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
+!       if (old_sigint_handler == SIG_IGN)
+! 	set_signal_handler (SIGINT, old_sigint_handler);
+!     }
+  
+    termination_state = last_command_exit_value;
+*** ../bash-3.1/patchlevel.h	Wed Jul 20 13:58:20 2005
+--- patchlevel.h	Wed Dec  7 13:48:42 2005
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 7
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 8
+  
+  #endif /* _PATCHLEVEL_H_ */

================================================================
Index: SOURCES/bash31-009
diff -u /dev/null SOURCES/bash31-009:1.1
--- /dev/null	Mon Mar 13 17:52:15 2006
+++ SOURCES/bash31-009	Mon Mar 13 17:52:10 2006
@@ -0,0 +1,66 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release: 3.1
+Patch-ID: bash31-009
+
+Bug-Reported-by: Joshua Neuheisel <jneuheisel at gmail.com>
+Bug-Reference-ID: <25d873330601140820v4ad8efd2t8bf683b073c138b3 at mail.gmail.com>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-01/msg00062.html
+
+Bug-Description:
+
+Under some circumstances, background (asynchronous) jobs can set the terminal
+process group incorrectly.  This can cause a foreground process (including
+the foreground shell) to get read errors and exit.
+
+Patch:
+
+*** ../bash-3.1/jobs.c	Fri Nov 11 23:13:27 2005
+--- jobs.c	Wed Feb  1 13:55:38 2006
+***************
+*** 620,625 ****
+  	   * the parent gives it away.
+  	   *
+  	   */
+! 	  if (job_control && newjob->pgrp)
+  	    give_terminal_to (newjob->pgrp, 0);
+  	}
+--- 634,642 ----
+  	   * the parent gives it away.
+  	   *
++ 	   * Don't give the terminal away if this shell is an asynchronous
++ 	   * subshell.
++ 	   *
+  	   */
+! 	  if (job_control && newjob->pgrp && (subshell_environment&SUBSHELL_ASYNC) == 0)
+  	    give_terminal_to (newjob->pgrp, 0);
+  	}
+***************
+*** 1656,1660 ****
+  	     shell's process group (we could be in the middle of a
+  	     pipeline, for example). */
+! 	  if (async_p == 0 && pipeline_pgrp != shell_pgrp)
+  	    give_terminal_to (pipeline_pgrp, 0);
+  
+--- 1743,1747 ----
+  	     shell's process group (we could be in the middle of a
+  	     pipeline, for example). */
+! 	  if (async_p == 0 && pipeline_pgrp != shell_pgrp && ((subshell_environment&SUBSHELL_ASYNC) == 0))
+  	    give_terminal_to (pipeline_pgrp, 0);
+  
+*** ../bash-3.1/patchlevel.h	Wed Jul 20 13:58:20 2005
+--- patchlevel.h	Wed Dec  7 13:48:42 2005
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 8
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 9
+  
+  #endif /* _PATCHLEVEL_H_ */

================================================================
Index: SOURCES/bash31-010
diff -u /dev/null SOURCES/bash31-010:1.1
--- /dev/null	Mon Mar 13 17:52:15 2006
+++ SOURCES/bash31-010	Mon Mar 13 17:52:10 2006
@@ -0,0 +1,164 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release: 3.1
+Patch-ID: bash31-010
+
+Bug-Reported-by: vw at vonwolff.de
+Bug-Reference-ID: <20060123135234.1AC2F1D596 at wst07.vonwolff.de>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-01/msg00090.html
+
+Bug-Description:
+
+There is a difference in behavior between bash-3.0 and bash-3.1 involving
+parsing of single- and double-quoted strings occurring in old-style
+command substitution.  The difference has to do with how backslashes are
+processed.  This patch restores a measure of backwards compatibility while
+the question of POSIX conformance and ultimately correct behavior is discussed.
+
+THIS IS AN UPDATED PATCH.  USE THIS COMMAND TO REVERSE THE EFFECTS OF
+THE ORIGINAL PATCH.  THE CURRENT DIRECTORY MUST BE THE BASH-3.1 SOURCE
+DIRECTORY.
+
+patch -p0 -R < bash31-010.orig
+
+Then apply this patch as usual.
+
+Patch:
+
+*** ../bash-3.1/parse.y	Fri Nov 11 23:14:18 2005
+--- parse.y	Thu Feb 23 08:21:12 2006
+***************
+*** 2716,2721 ****
+--- 2723,2729 ----
+  #define P_ALLOWESC	0x02
+  #define P_DQUOTE	0x04
+  #define P_COMMAND	0x08	/* parsing a command, so look for comments */
++ #define P_BACKQUOTE	0x10	/* parsing a backquoted command substitution */
+  
+  static char matched_pair_error;
+  static char *
+***************
+*** 2725,2736 ****
+       int *lenp, flags;
+  {
+    int count, ch, was_dollar, in_comment, check_comment;
+!   int pass_next_character, nestlen, ttranslen, start_lineno;
+    char *ret, *nestret, *ttrans;
+    int retind, retsize, rflags;
+  
+    count = 1;
+!   pass_next_character = was_dollar = in_comment = 0;
+    check_comment = (flags & P_COMMAND) && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0;
+  
+    /* RFLAGS is the set of flags we want to pass to recursive calls. */
+--- 2733,2744 ----
+       int *lenp, flags;
+  {
+    int count, ch, was_dollar, in_comment, check_comment;
+!   int pass_next_character, backq_backslash, nestlen, ttranslen, start_lineno;
+    char *ret, *nestret, *ttrans;
+    int retind, retsize, rflags;
+  
+    count = 1;
+!   pass_next_character = backq_backslash = was_dollar = in_comment = 0;
+    check_comment = (flags & P_COMMAND) && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0;
+  
+    /* RFLAGS is the set of flags we want to pass to recursive calls. */
+***************
+*** 2742,2752 ****
+    start_lineno = line_number;
+    while (count)
+      {
+! #if 0
+!       ch = shell_getc ((qc != '\'' || (flags & P_ALLOWESC)) && pass_next_character == 0);
+! #else
+!       ch = shell_getc (qc != '\'' && pass_next_character == 0);
+! #endif
+        if (ch == EOF)
+  	{
+  	  free (ret);
+--- 2750,2757 ----
+    start_lineno = line_number;
+    while (count)
+      {
+!       ch = shell_getc (qc != '\'' && pass_next_character == 0 && backq_backslash == 0);
+! 
+        if (ch == EOF)
+  	{
+  	  free (ret);
+***************
+*** 2771,2779 ****
+  	  continue;
+  	}
+        /* Not exactly right yet */
+!       else if (check_comment && in_comment == 0 && ch == '#' && (retind == 0 || ret[retind-1] == '\n' || whitespace (ret[retind -1])))
+  	in_comment = 1;
+  
+        if (pass_next_character)		/* last char was backslash */
+  	{
+  	  pass_next_character = 0;
+--- 2776,2791 ----
+  	  continue;
+  	}
+        /* Not exactly right yet */
+!       else if MBTEST(check_comment && in_comment == 0 && ch == '#' && (retind == 0 || ret[retind-1] == '\n' || whitespace (ret[retind - 1])))
+  	in_comment = 1;
+  
++       /* last char was backslash inside backquoted command substitution */
++       if (backq_backslash)
++ 	{
++ 	  backq_backslash = 0;
++ 	  /* Placeholder for adding special characters */
++ 	}
++ 
+        if (pass_next_character)		/* last char was backslash */
+  	{
+  	  pass_next_character = 0;
+***************
+*** 2814,2819 ****
+--- 2824,2831 ----
+  	{
+  	  if MBTEST((flags & P_ALLOWESC) && ch == '\\')
+  	    pass_next_character++;
++ 	  else if MBTEST((flags & P_BACKQUOTE) && ch == '\\')
++ 	    backq_backslash++;
+  	  continue;
+  	}
+  
+***************
+*** 2898,2904 ****
+  	}
+        else if MBTEST(qc == '`' && (ch == '"' || ch == '\'') && in_comment == 0)
+  	{
+! 	  nestret = parse_matched_pair (0, ch, ch, &nestlen, rflags);
+  	  goto add_nestret;
+  	}
+        else if MBTEST(was_dollar && (ch == '(' || ch == '{' || ch == '['))	/* ) } ] */
+--- 2910,2920 ----
+  	}
+        else if MBTEST(qc == '`' && (ch == '"' || ch == '\'') && in_comment == 0)
+  	{
+! 	  /* Add P_BACKQUOTE so backslash quotes the next character and
+! 	     shell_getc does the right thing with \<newline>.  We do this for
+! 	     a measure  of backwards compatibility -- it's not strictly the
+! 	     right POSIX thing. */
+! 	  nestret = parse_matched_pair (0, ch, ch, &nestlen, rflags|P_BACKQUOTE);
+  	  goto add_nestret;
+  	}
+        else if MBTEST(was_dollar && (ch == '(' || ch == '{' || ch == '['))	/* ) } ] */
+*** ../bash-3.1/patchlevel.h	Wed Jul 20 13:58:20 2005
+--- patchlevel.h	Wed Dec  7 13:48:42 2005
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 9
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 10
+  
+  #endif /* _PATCHLEVEL_H_ */

================================================================
Index: SOURCES/bash31-011
diff -u /dev/null SOURCES/bash31-011:1.1
--- /dev/null	Mon Mar 13 17:52:15 2006
+++ SOURCES/bash31-011	Mon Mar 13 17:52:10 2006
@@ -0,0 +1,47 @@
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release: 3.1
+Patch-ID: bash31-011
+
+Bug-Reported-by: Mike Stroyan <mike.stroyan at hp.com>
+Bug-Reference-ID: <E1EvwxP-0004LD-GC at localhost.localdomain>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-01/msg00033.html
+
+Bug-Description:
+
+A change in bash-3.1 caused the single quotes to be stripped from ANSI-C
+quoting inside double-quoted command substitutions.
+
+Patch:
+
+*** ../bash-3.1/parse.y	Fri Nov 11 23:14:18 2005
+--- parse.y	Wed Jan 25 14:55:18 2006
+***************
+*** 2908,2912 ****
+  	    count--;
+  	  if (ch == '(')		/* ) */
+! 	    nestret = parse_matched_pair (0, '(', ')', &nestlen, rflags);
+  	  else if (ch == '{')		/* } */
+  	    nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|rflags);
+--- 2914,2918 ----
+  	    count--;
+  	  if (ch == '(')		/* ) */
+! 	    nestret = parse_matched_pair (0, '(', ')', &nestlen, rflags & ~P_DQUOTE);
+  	  else if (ch == '{')		/* } */
+  	    nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|rflags);
+*** ../bash-3.1/patchlevel.h	Wed Jul 20 13:58:20 2005
+--- patchlevel.h	Wed Dec  7 13:48:42 2005
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 10
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 11
+  
+  #endif /* _PATCHLEVEL_H_ */
================================================================


More information about the pld-cvs-commit mailing list