Patchlevel 39
This commit is contained in:
		
							parent
							
								
									05e8dfe20b
								
							
						
					
					
						commit
						2cb46035a4
					
				@ -1,11 +1,15 @@
 | 
			
		||||
--- bash-3.2/execute_cmd.c.cond-rmatch	2007-07-05 10:07:27.000000000 +0100
 | 
			
		||||
+++ bash-3.2/execute_cmd.c	2007-07-05 10:09:02.000000000 +0100
 | 
			
		||||
@@ -2560,7 +2560,7 @@
 | 
			
		||||
diff -up bash-3.2/execute_cmd.c.cond-rmatch bash-3.2/execute_cmd.c
 | 
			
		||||
--- bash-3.2/execute_cmd.c.cond-rmatch	2008-06-05 17:21:20.000000000 +0200
 | 
			
		||||
+++ bash-3.2/execute_cmd.c	2008-06-05 17:23:54.000000000 +0200
 | 
			
		||||
@@ -2560,8 +2560,9 @@ execute_cond_node (cond)
 | 
			
		||||
       arg1 = cond_expand_word (cond->left->op, 0);
 | 
			
		||||
       if (arg1 == 0)
 | 
			
		||||
 	arg1 = nullstr;
 | 
			
		||||
-      arg2 = cond_expand_word (cond->right->op, rmatch ? 2 : (patmatch ? 1 : 0));
 | 
			
		||||
-      arg2 = cond_expand_word (cond->right->op,
 | 
			
		||||
-			       (rmatch && shell_compatibility_level > 31) ? 2 : (patmatch ? 1 : 0));
 | 
			
		||||
+
 | 
			
		||||
+      arg2 = cond_expand_word (cond->right->op, patmatch ? 1 : 0);
 | 
			
		||||
+
 | 
			
		||||
       if (arg2 == 0)
 | 
			
		||||
 	arg2 = nullstr;
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										18
									
								
								bash.spec
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								bash.spec
									
									
									
									
									
								
							@ -1,7 +1,7 @@
 | 
			
		||||
Version: 3.2
 | 
			
		||||
Name: bash
 | 
			
		||||
Summary: The GNU Bourne Again shell (bash) version %{version}
 | 
			
		||||
Release: 25%{?dist}
 | 
			
		||||
Release: 26%{?dist}
 | 
			
		||||
Group: System Environment/Shells
 | 
			
		||||
License: GPLv2+
 | 
			
		||||
Url: http://www.gnu.org/software/bash
 | 
			
		||||
@ -44,6 +44,13 @@ Patch30: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-030
 | 
			
		||||
Patch31: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-031
 | 
			
		||||
Patch32: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-032
 | 
			
		||||
Patch33: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-033
 | 
			
		||||
Patch34: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-034
 | 
			
		||||
Patch35: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-035
 | 
			
		||||
Patch36: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-036
 | 
			
		||||
Patch37: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-037
 | 
			
		||||
Patch38: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-038
 | 
			
		||||
Patch39: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-039
 | 
			
		||||
 | 
			
		||||
# Other patches
 | 
			
		||||
Patch100: bash-2.03-paths.patch
 | 
			
		||||
Patch101: bash-2.02-security.patch
 | 
			
		||||
@ -116,6 +123,12 @@ compliance over previous versions.
 | 
			
		||||
%patch31 -p0 -b .031
 | 
			
		||||
%patch32 -p0 -b .032
 | 
			
		||||
%patch33 -p0 -b .033
 | 
			
		||||
%patch34 -p0 -b .034
 | 
			
		||||
%patch35 -p0 -b .035
 | 
			
		||||
%patch36 -p0 -b .036
 | 
			
		||||
%patch37 -p0 -b .037
 | 
			
		||||
%patch38 -p0 -b .038
 | 
			
		||||
%patch39 -p0 -b .039
 | 
			
		||||
 | 
			
		||||
# Other patches
 | 
			
		||||
%patch100 -p1 -b .paths
 | 
			
		||||
@ -278,6 +291,9 @@ fi
 | 
			
		||||
%doc doc/*.ps doc/*.0 doc/*.html doc/article.txt
 | 
			
		||||
 | 
			
		||||
%changelog
 | 
			
		||||
* Thu Jun  5 2008 Roman Rakus <rrakus@redhat.com> - 3.2-26
 | 
			
		||||
- Patchlevel 39
 | 
			
		||||
 | 
			
		||||
* Tue Jun  3 2008 Roman Rakus <rrakus@redhat.com> - 3.2-25
 | 
			
		||||
- #449512 - reverting back last change - don't use glob library
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										74
									
								
								bash32-034
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								bash32-034
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,74 @@
 | 
			
		||||
			     BASH PATCH REPORT
 | 
			
		||||
			     =================
 | 
			
		||||
 | 
			
		||||
Bash-Release: 3.2
 | 
			
		||||
Patch-ID: bash32-034
 | 
			
		||||
 | 
			
		||||
Bug-Reported-by:	Ian Campbell <ian.campbell@xensource.com>
 | 
			
		||||
Bug-Reference-ID:	<EXCHPAFExU3l5bhn1ow00001dfe@rpc.xensource.com>
 | 
			
		||||
Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2007-10/msg00060.html
 | 
			
		||||
 | 
			
		||||
Bug-Description:
 | 
			
		||||
 | 
			
		||||
The bash getcwd replacement will write past the end of allocated memory
 | 
			
		||||
when it allocates the buffer itself if it uses the buffer size passed as
 | 
			
		||||
an argument, and that size is less than the length of the pathname.
 | 
			
		||||
 | 
			
		||||
Patch:
 | 
			
		||||
 | 
			
		||||
*** ../bash-3.2-patched/lib/sh/getcwd.c	2004-07-21 17:15:19.000000000 -0400
 | 
			
		||||
--- lib/sh/getcwd.c	2007-12-31 19:26:36.000000000 -0500
 | 
			
		||||
***************
 | 
			
		||||
*** 252,268 ****
 | 
			
		||||
    {
 | 
			
		||||
      size_t len = pathbuf + pathsize - pathp;
 | 
			
		||||
      if (buf == NULL)
 | 
			
		||||
        {
 | 
			
		||||
! 	if (len < (size_t) size)
 | 
			
		||||
! 	  len = size;
 | 
			
		||||
! 	buf = (char *) malloc (len);
 | 
			
		||||
  	if (buf == NULL)
 | 
			
		||||
  	  goto lose2;
 | 
			
		||||
        }
 | 
			
		||||
!     else if ((size_t) size < len)
 | 
			
		||||
!       {
 | 
			
		||||
! 	errno = ERANGE;
 | 
			
		||||
! 	goto lose2;
 | 
			
		||||
!       }
 | 
			
		||||
      (void) memcpy((PTR_T) buf, (PTR_T) pathp, len);
 | 
			
		||||
    }
 | 
			
		||||
--- 287,305 ----
 | 
			
		||||
    {
 | 
			
		||||
      size_t len = pathbuf + pathsize - pathp;
 | 
			
		||||
+     if (buf == NULL && size <= 0)
 | 
			
		||||
+       size = len;
 | 
			
		||||
+ 
 | 
			
		||||
+     if ((size_t) size < len)
 | 
			
		||||
+       {
 | 
			
		||||
+ 	errno = ERANGE;
 | 
			
		||||
+ 	goto lose2;
 | 
			
		||||
+       }
 | 
			
		||||
      if (buf == NULL)
 | 
			
		||||
        {
 | 
			
		||||
! 	buf = (char *) malloc (size);
 | 
			
		||||
  	if (buf == NULL)
 | 
			
		||||
  	  goto lose2;
 | 
			
		||||
        }
 | 
			
		||||
! 
 | 
			
		||||
      (void) memcpy((PTR_T) buf, (PTR_T) pathp, len);
 | 
			
		||||
    }
 | 
			
		||||
*** ../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 33
 | 
			
		||||
  
 | 
			
		||||
  #endif /* _PATCHLEVEL_H_ */
 | 
			
		||||
--- 26,30 ----
 | 
			
		||||
     looks for to find the patch level (for the sccs version string). */
 | 
			
		||||
  
 | 
			
		||||
! #define PATCHLEVEL 34
 | 
			
		||||
  
 | 
			
		||||
  #endif /* _PATCHLEVEL_H_ */
 | 
			
		||||
							
								
								
									
										159
									
								
								bash32-035
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										159
									
								
								bash32-035
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,159 @@
 | 
			
		||||
			     BASH PATCH REPORT
 | 
			
		||||
			     =================
 | 
			
		||||
 | 
			
		||||
Bash-Release: 3.2
 | 
			
		||||
Patch-ID: bash32-035
 | 
			
		||||
 | 
			
		||||
Bug-Reported-by:	Ingo Molnar <mingo@elte.hu>
 | 
			
		||||
Bug-Reference-ID:	<20071205202901.GA25202@elte.hu>
 | 
			
		||||
Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2007-12/msg00014.html
 | 
			
		||||
 | 
			
		||||
Bug-Description:
 | 
			
		||||
 | 
			
		||||
Bash incorrectly puts the second and subsequent children spawned by a
 | 
			
		||||
shell forked to run a command substitution in the wrong process group.
 | 
			
		||||
 | 
			
		||||
Patch:
 | 
			
		||||
 | 
			
		||||
*** ../bash-3.2-patched/subst.c	2007-12-13 22:31:21.000000000 -0500
 | 
			
		||||
--- subst.c	2008-01-17 22:48:15.000000000 -0500
 | 
			
		||||
***************
 | 
			
		||||
*** 4621,4627 ****
 | 
			
		||||
  
 | 
			
		||||
  #if defined (JOB_CONTROL)
 | 
			
		||||
    set_sigchld_handler ();
 | 
			
		||||
    stop_making_children ();
 | 
			
		||||
!   pipeline_pgrp = old_pipeline_pgrp;
 | 
			
		||||
  #else
 | 
			
		||||
    stop_making_children ();
 | 
			
		||||
--- 4721,4728 ----
 | 
			
		||||
  
 | 
			
		||||
  #if defined (JOB_CONTROL)
 | 
			
		||||
    set_sigchld_handler ();
 | 
			
		||||
    stop_making_children ();
 | 
			
		||||
!   if (pid != 0)
 | 
			
		||||
!     pipeline_pgrp = old_pipeline_pgrp;
 | 
			
		||||
  #else
 | 
			
		||||
    stop_making_children ();
 | 
			
		||||
*** ../bash-3.2-patched/jobs.c	2007-08-25 13:46:59.000000000 -0400
 | 
			
		||||
--- jobs.c	2007-12-08 16:47:43.000000000 -0500
 | 
			
		||||
***************
 | 
			
		||||
*** 251,254 ****
 | 
			
		||||
--- 251,255 ----
 | 
			
		||||
  static int set_job_status_and_cleanup __P((int));
 | 
			
		||||
  
 | 
			
		||||
+ static WAIT job_signal_status __P((int));
 | 
			
		||||
  static WAIT raw_job_exit_status __P((int));
 | 
			
		||||
  
 | 
			
		||||
***************
 | 
			
		||||
*** 2220,2223 ****
 | 
			
		||||
--- 2238,2261 ----
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
+ static WAIT
 | 
			
		||||
+ job_signal_status (job)
 | 
			
		||||
+      int job;
 | 
			
		||||
+ {
 | 
			
		||||
+   register PROCESS *p;
 | 
			
		||||
+   WAIT s;
 | 
			
		||||
+ 
 | 
			
		||||
+   p = jobs[job]->pipe;
 | 
			
		||||
+   do
 | 
			
		||||
+     {
 | 
			
		||||
+       s = p->status;
 | 
			
		||||
+       if (WIFSIGNALED(s) || WIFSTOPPED(s))
 | 
			
		||||
+ 	break;
 | 
			
		||||
+       p = p->next;
 | 
			
		||||
+     }
 | 
			
		||||
+   while (p != jobs[job]->pipe);
 | 
			
		||||
+ 
 | 
			
		||||
+   return s;
 | 
			
		||||
+ }
 | 
			
		||||
+   
 | 
			
		||||
  /* Return the exit status of the last process in the pipeline for job JOB.
 | 
			
		||||
     This is the exit status of the entire job. */
 | 
			
		||||
***************
 | 
			
		||||
*** 2302,2310 ****
 | 
			
		||||
       received, only if one of the jobs run is killed via SIGINT.  If
 | 
			
		||||
       job control is not set, the job will be run in the same pgrp as
 | 
			
		||||
!      the shell, and the shell will see any signals the job gets. */
 | 
			
		||||
  
 | 
			
		||||
    /* This is possibly a race condition -- should it go in stop_pipeline? */
 | 
			
		||||
    wait_sigint_received = 0;
 | 
			
		||||
!   if (job_control == 0)
 | 
			
		||||
      {
 | 
			
		||||
        old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
 | 
			
		||||
--- 2343,2354 ----
 | 
			
		||||
       received, only if one of the jobs run is killed via SIGINT.  If
 | 
			
		||||
       job control is not set, the job will be run in the same pgrp as
 | 
			
		||||
!      the shell, and the shell will see any signals the job gets.  In
 | 
			
		||||
!      fact, we want this set every time the waiting shell and the waited-
 | 
			
		||||
!      for process are in the same process group, including command
 | 
			
		||||
!      substitution. */
 | 
			
		||||
  
 | 
			
		||||
    /* This is possibly a race condition -- should it go in stop_pipeline? */
 | 
			
		||||
    wait_sigint_received = 0;
 | 
			
		||||
!   if (job_control == 0 || (subshell_environment&SUBSHELL_COMSUB))
 | 
			
		||||
      {
 | 
			
		||||
        old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
 | 
			
		||||
***************
 | 
			
		||||
*** 2452,2464 ****
 | 
			
		||||
  	     the last process in the pipeline.  If no process exits due to a
 | 
			
		||||
  	     signal, S is left as the status of the last job in the pipeline. */
 | 
			
		||||
! 	  p = jobs[job]->pipe;
 | 
			
		||||
! 	  do
 | 
			
		||||
! 	    {
 | 
			
		||||
! 	      s = p->status;
 | 
			
		||||
! 	      if (WIFSIGNALED(s) || WIFSTOPPED(s))
 | 
			
		||||
! 		break;
 | 
			
		||||
! 	      p = p->next;
 | 
			
		||||
! 	    }
 | 
			
		||||
! 	  while (p != jobs[job]->pipe);
 | 
			
		||||
  
 | 
			
		||||
  	  if (WIFSIGNALED (s) || WIFSTOPPED (s))
 | 
			
		||||
--- 2496,2500 ----
 | 
			
		||||
  	     the last process in the pipeline.  If no process exits due to a
 | 
			
		||||
  	     signal, S is left as the status of the last job in the pipeline. */
 | 
			
		||||
! 	  s = job_signal_status (job);
 | 
			
		||||
  
 | 
			
		||||
  	  if (WIFSIGNALED (s) || WIFSTOPPED (s))
 | 
			
		||||
***************
 | 
			
		||||
*** 2494,2497 ****
 | 
			
		||||
--- 2530,2551 ----
 | 
			
		||||
  	    }
 | 
			
		||||
  	}
 | 
			
		||||
+       else if ((subshell_environment & SUBSHELL_COMSUB) && wait_sigint_received)
 | 
			
		||||
+ 	{
 | 
			
		||||
+ 	  /* If waiting for a job in a subshell started to do command
 | 
			
		||||
+ 	     substitution, simulate getting and being killed by the SIGINT to
 | 
			
		||||
+ 	     pass the status back to our parent. */
 | 
			
		||||
+ 	  s = job_signal_status (job);
 | 
			
		||||
+ 	
 | 
			
		||||
+ 	  if (WIFSIGNALED (s) && WTERMSIG (s) == SIGINT && signal_is_trapped (SIGINT) == 0)
 | 
			
		||||
+ 	    {
 | 
			
		||||
+ 	      UNBLOCK_CHILD (oset);
 | 
			
		||||
+ 	      restore_sigint_handler ();
 | 
			
		||||
+ 	      old_sigint_handler = set_signal_handler (SIGINT, SIG_DFL);
 | 
			
		||||
+ 	      if (old_sigint_handler == SIG_IGN)
 | 
			
		||||
+ 		restore_sigint_handler ();
 | 
			
		||||
+ 	      else
 | 
			
		||||
+ 		kill (getpid (), SIGINT);
 | 
			
		||||
+ 	    }
 | 
			
		||||
+ 	}
 | 
			
		||||
  
 | 
			
		||||
        /* Moved here from set_job_status_and_cleanup, which is in the SIGCHLD
 | 
			
		||||
*** ../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 34
 | 
			
		||||
  
 | 
			
		||||
  #endif /* _PATCHLEVEL_H_ */
 | 
			
		||||
--- 26,30 ----
 | 
			
		||||
     looks for to find the patch level (for the sccs version string). */
 | 
			
		||||
  
 | 
			
		||||
! #define PATCHLEVEL 35
 | 
			
		||||
  
 | 
			
		||||
  #endif /* _PATCHLEVEL_H_ */
 | 
			
		||||
							
								
								
									
										44
									
								
								bash32-036
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								bash32-036
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,44 @@
 | 
			
		||||
			     BASH PATCH REPORT
 | 
			
		||||
			     =================
 | 
			
		||||
 | 
			
		||||
Bash-Release: 3.2
 | 
			
		||||
Patch-ID: bash32-036
 | 
			
		||||
 | 
			
		||||
Bug-Reported-by:	Len Lattanzi <llattanzi@apple.com>
 | 
			
		||||
Bug-Reference-ID:	<87493131-7AEC-4301-A684-E6CC6D06E3E1@apple.com>
 | 
			
		||||
Bug-Reference-URL:
 | 
			
		||||
 | 
			
		||||
Bug-Description:
 | 
			
		||||
 | 
			
		||||
When initializing a subshell, bash did not reset a sentinel keeping track
 | 
			
		||||
of the number of command substitutions, leading to an infinite loop if
 | 
			
		||||
an error was encountered in the subshell.
 | 
			
		||||
 | 
			
		||||
Patch:
 | 
			
		||||
 | 
			
		||||
*** ../bash-3.2-patched/execute_cmd.c	2007-12-13 22:31:14.000000000 -0500
 | 
			
		||||
--- execute_cmd.c	2007-12-20 08:52:34.000000000 -0500
 | 
			
		||||
***************
 | 
			
		||||
*** 3881,3884 ****
 | 
			
		||||
--- 3916,3921 ----
 | 
			
		||||
  
 | 
			
		||||
    clear_unwind_protect_list (0);
 | 
			
		||||
+   /* XXX -- are there other things we should be resetting here? */
 | 
			
		||||
+   parse_and_execute_level = 0;		/* nothing left to restore it */
 | 
			
		||||
  
 | 
			
		||||
    /* We're no longer inside a shell function. */
 | 
			
		||||
*** ../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 35
 | 
			
		||||
  
 | 
			
		||||
  #endif /* _PATCHLEVEL_H_ */
 | 
			
		||||
--- 26,30 ----
 | 
			
		||||
     looks for to find the patch level (for the sccs version string). */
 | 
			
		||||
  
 | 
			
		||||
! #define PATCHLEVEL 36
 | 
			
		||||
  
 | 
			
		||||
  #endif /* _PATCHLEVEL_H_ */
 | 
			
		||||
							
								
								
									
										110
									
								
								bash32-037
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										110
									
								
								bash32-037
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,110 @@
 | 
			
		||||
			     BASH PATCH REPORT
 | 
			
		||||
			     =================
 | 
			
		||||
 | 
			
		||||
Bash-Release: 3.2
 | 
			
		||||
Patch-ID: bash32-037
 | 
			
		||||
 | 
			
		||||
Bug-Reported-by:	jared r r spiegel <jrrs@iorek.ice-nine.org>
 | 
			
		||||
Bug-Reference-ID:	<200801152201.m0FM1lDp021260@iorek.ice-nine.org>
 | 
			
		||||
Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2008-01/msg00049.html
 | 
			
		||||
 | 
			
		||||
Bug-Description:
 | 
			
		||||
 | 
			
		||||
Bash inappropriately evaluates command substitutions while expanding
 | 
			
		||||
directory names as part of command substitution.
 | 
			
		||||
 | 
			
		||||
Patch:
 | 
			
		||||
 | 
			
		||||
*** ../bash-3.2-patched/subst.c	2007-12-13 22:31:21.000000000 -0500
 | 
			
		||||
--- subst.c	2008-01-17 22:48:15.000000000 -0500
 | 
			
		||||
***************
 | 
			
		||||
*** 2815,2821 ****
 | 
			
		||||
     to jump_to_top_level here so we don't endlessly loop. */
 | 
			
		||||
  WORD_LIST *
 | 
			
		||||
! expand_prompt_string (string, quoted)
 | 
			
		||||
       char *string;
 | 
			
		||||
       int quoted;
 | 
			
		||||
  {
 | 
			
		||||
    WORD_LIST *value;
 | 
			
		||||
--- 2895,2902 ----
 | 
			
		||||
     to jump_to_top_level here so we don't endlessly loop. */
 | 
			
		||||
  WORD_LIST *
 | 
			
		||||
! expand_prompt_string (string, quoted, wflags)
 | 
			
		||||
       char *string;
 | 
			
		||||
       int quoted;
 | 
			
		||||
+      int wflags;
 | 
			
		||||
  {
 | 
			
		||||
    WORD_LIST *value;
 | 
			
		||||
***************
 | 
			
		||||
*** 2825,2829 ****
 | 
			
		||||
      return ((WORD_LIST *)NULL);
 | 
			
		||||
  
 | 
			
		||||
!   td.flags = 0;
 | 
			
		||||
    td.word = savestring (string);
 | 
			
		||||
  
 | 
			
		||||
--- 2906,2910 ----
 | 
			
		||||
      return ((WORD_LIST *)NULL);
 | 
			
		||||
  
 | 
			
		||||
!   td.flags = wflags;
 | 
			
		||||
    td.word = savestring (string);
 | 
			
		||||
  
 | 
			
		||||
*** ../bash-3.2-patched/subst.h	2007-03-24 14:51:05.000000000 -0400
 | 
			
		||||
--- subst.h	2008-01-17 22:46:08.000000000 -0500
 | 
			
		||||
***************
 | 
			
		||||
*** 136,140 ****
 | 
			
		||||
  
 | 
			
		||||
  /* Expand a prompt string. */
 | 
			
		||||
! extern WORD_LIST *expand_prompt_string __P((char *, int));
 | 
			
		||||
  
 | 
			
		||||
  /* Expand STRING just as if you were expanding a word.  This also returns
 | 
			
		||||
--- 137,141 ----
 | 
			
		||||
  
 | 
			
		||||
  /* Expand a prompt string. */
 | 
			
		||||
! extern WORD_LIST *expand_prompt_string __P((char *, int, int));
 | 
			
		||||
  
 | 
			
		||||
  /* Expand STRING just as if you were expanding a word.  This also returns
 | 
			
		||||
*** ../bash-3.2-patched/parse.y	2007-08-25 13:47:06.000000000 -0400
 | 
			
		||||
--- parse.y	2008-01-17 22:46:30.000000000 -0500
 | 
			
		||||
***************
 | 
			
		||||
*** 4367,4371 ****
 | 
			
		||||
      {
 | 
			
		||||
        last_exit_value = last_command_exit_value;
 | 
			
		||||
!       list = expand_prompt_string (result, Q_DOUBLE_QUOTES);
 | 
			
		||||
        free (result);
 | 
			
		||||
        result = string_list (list);
 | 
			
		||||
--- 4367,4371 ----
 | 
			
		||||
      {
 | 
			
		||||
        last_exit_value = last_command_exit_value;
 | 
			
		||||
!       list = expand_prompt_string (result, Q_DOUBLE_QUOTES, 0);
 | 
			
		||||
        free (result);
 | 
			
		||||
        result = string_list (list);
 | 
			
		||||
*** ../bash-3.2-patched/bashline.c	2006-07-29 16:39:30.000000000 -0400
 | 
			
		||||
--- bashline.c	2008-02-17 12:53:42.000000000 -0500
 | 
			
		||||
***************
 | 
			
		||||
*** 2358,2362 ****
 | 
			
		||||
      {
 | 
			
		||||
        new_dirname = savestring (local_dirname);
 | 
			
		||||
!       wl = expand_prompt_string (new_dirname, 0);	/* does the right thing */
 | 
			
		||||
        if (wl)
 | 
			
		||||
  	{
 | 
			
		||||
--- 2376,2380 ----
 | 
			
		||||
      {
 | 
			
		||||
        new_dirname = savestring (local_dirname);
 | 
			
		||||
!       wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB);	/* does the right thing */
 | 
			
		||||
        if (wl)
 | 
			
		||||
  	{
 | 
			
		||||
*** ../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 36
 | 
			
		||||
  
 | 
			
		||||
  #endif /* _PATCHLEVEL_H_ */
 | 
			
		||||
--- 26,30 ----
 | 
			
		||||
     looks for to find the patch level (for the sccs version string). */
 | 
			
		||||
  
 | 
			
		||||
! #define PATCHLEVEL 37
 | 
			
		||||
  
 | 
			
		||||
  #endif /* _PATCHLEVEL_H_ */
 | 
			
		||||
							
								
								
									
										80
									
								
								bash32-038
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								bash32-038
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,80 @@
 | 
			
		||||
			     BASH PATCH REPORT
 | 
			
		||||
			     =================
 | 
			
		||||
 | 
			
		||||
Bash-Release: 3.2
 | 
			
		||||
Patch-ID: bash32-038
 | 
			
		||||
 | 
			
		||||
Bug-Reported-by:	Wojciech Puchar <wojtek@wojtek.tensor.gdynia.pl>
 | 
			
		||||
Bug-Reference-ID:	<200803131141.m2DBf9vo001136@wojtek.tensor.gdynia.pl>
 | 
			
		||||
Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2008-03/msg00029.html
 | 
			
		||||
 | 
			
		||||
Bug-Description:
 | 
			
		||||
 | 
			
		||||
When reading input lines into a single variable using the `read' builtin,
 | 
			
		||||
bash did not free the memory it read after assigining it to the named
 | 
			
		||||
variable, causing a memory leak noticable when reading large amounts of
 | 
			
		||||
data.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Patch:
 | 
			
		||||
 | 
			
		||||
*** ../bash-3.2-patched/builtins/read.def	2007-08-25 13:47:07.000000000 -0400
 | 
			
		||||
--- builtins/read.def	2008-03-07 12:55:47.000000000 -0500
 | 
			
		||||
***************
 | 
			
		||||
*** 135,139 ****
 | 
			
		||||
    char c;
 | 
			
		||||
    char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname;
 | 
			
		||||
!   char *e, *t, *t1, *ps2;
 | 
			
		||||
    struct stat tsb;
 | 
			
		||||
    SHELL_VAR *var;
 | 
			
		||||
--- 152,156 ----
 | 
			
		||||
    char c;
 | 
			
		||||
    char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname;
 | 
			
		||||
!   char *e, *t, *t1, *ps2, *tofree;
 | 
			
		||||
    struct stat tsb;
 | 
			
		||||
    SHELL_VAR *var;
 | 
			
		||||
***************
 | 
			
		||||
*** 675,678 ****
 | 
			
		||||
--- 728,732 ----
 | 
			
		||||
    /* Check whether or not the number of fields is exactly the same as the
 | 
			
		||||
       number of variables. */
 | 
			
		||||
+   tofree = NULL;
 | 
			
		||||
    if (*input_string)
 | 
			
		||||
      {
 | 
			
		||||
***************
 | 
			
		||||
*** 680,684 ****
 | 
			
		||||
        t = get_word_from_string (&input_string, ifs_chars, &e);
 | 
			
		||||
        if (*input_string == 0)
 | 
			
		||||
! 	input_string = t;
 | 
			
		||||
        else
 | 
			
		||||
  	input_string = strip_trailing_ifs_whitespace (t1, ifs_chars, saw_escape);
 | 
			
		||||
--- 734,738 ----
 | 
			
		||||
        t = get_word_from_string (&input_string, ifs_chars, &e);
 | 
			
		||||
        if (*input_string == 0)
 | 
			
		||||
! 	tofree = input_string = t;
 | 
			
		||||
        else
 | 
			
		||||
  	input_string = strip_trailing_ifs_whitespace (t1, ifs_chars, saw_escape);
 | 
			
		||||
***************
 | 
			
		||||
*** 695,698 ****
 | 
			
		||||
--- 749,754 ----
 | 
			
		||||
      var = bind_read_variable (list->word->word, input_string);
 | 
			
		||||
    stupidly_hack_special_variables (list->word->word);
 | 
			
		||||
+   FREE (tofree);
 | 
			
		||||
+ 
 | 
			
		||||
    if (var)
 | 
			
		||||
      VUNSETATTR (var, att_invisible);
 | 
			
		||||
*** ../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 37
 | 
			
		||||
  
 | 
			
		||||
  #endif /* _PATCHLEVEL_H_ */
 | 
			
		||||
--- 26,30 ----
 | 
			
		||||
     looks for to find the patch level (for the sccs version string). */
 | 
			
		||||
  
 | 
			
		||||
! #define PATCHLEVEL 38
 | 
			
		||||
  
 | 
			
		||||
  #endif /* _PATCHLEVEL_H_ */
 | 
			
		||||
							
								
								
									
										175
									
								
								bash32-039
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										175
									
								
								bash32-039
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,175 @@
 | 
			
		||||
			     BASH PATCH REPORT
 | 
			
		||||
			     =================
 | 
			
		||||
 | 
			
		||||
Bash-Release: 3.2
 | 
			
		||||
Patch-ID: bash32-039
 | 
			
		||||
 | 
			
		||||
Bug-Reported-by:	rew@erebor.com
 | 
			
		||||
Bug-Reference-ID:	<20070119065603.546D011E9C@kansas.erebor.com>
 | 
			
		||||
Bug-Reference-URL:	
 | 
			
		||||
 | 
			
		||||
Bug-Description:
 | 
			
		||||
 | 
			
		||||
Bash-3.2 changed the behavior of the [[ command's `=~' operator when the
 | 
			
		||||
right-hand side was quoted:  it matched the quoted portions as strings.
 | 
			
		||||
This patch introduces a new shell option: compat31.  When enabled, it
 | 
			
		||||
restores the bash-3.1 behavior with respect to evaluating quoted arguments
 | 
			
		||||
to the =~ operator.
 | 
			
		||||
 | 
			
		||||
Patch:
 | 
			
		||||
 | 
			
		||||
*** ../bash-3.2-patched/execute_cmd.c	2007-12-14 21:12:39.000000000 -0500
 | 
			
		||||
--- execute_cmd.c	2008-02-22 21:20:40.000000000 -0500
 | 
			
		||||
***************
 | 
			
		||||
*** 2547,2551 ****
 | 
			
		||||
        if (arg1 == 0)
 | 
			
		||||
  	arg1 = nullstr;
 | 
			
		||||
!       arg2 = cond_expand_word (cond->right->op, rmatch ? 2 : (patmatch ? 1 : 0));
 | 
			
		||||
        if (arg2 == 0)
 | 
			
		||||
  	arg2 = nullstr;
 | 
			
		||||
--- 2552,2557 ----
 | 
			
		||||
        if (arg1 == 0)
 | 
			
		||||
  	arg1 = nullstr;
 | 
			
		||||
!       arg2 = cond_expand_word (cond->right->op,
 | 
			
		||||
! 			       (rmatch && shell_compatibility_level > 31) ? 2 : (patmatch ? 1 : 0));
 | 
			
		||||
        if (arg2 == 0)
 | 
			
		||||
  	arg2 = nullstr;
 | 
			
		||||
*** ../bash-3.2-patched/shell.h	2003-06-01 15:04:36.000000000 -0400
 | 
			
		||||
--- shell.h	2008-02-22 21:16:48.000000000 -0500
 | 
			
		||||
***************
 | 
			
		||||
*** 90,93 ****
 | 
			
		||||
--- 90,94 ----
 | 
			
		||||
  extern int interactive, interactive_shell;
 | 
			
		||||
  extern int startup_state;
 | 
			
		||||
+ extern int shell_compatibility_level;
 | 
			
		||||
  
 | 
			
		||||
  /* Structure to pass around that holds a bitmap of file descriptors
 | 
			
		||||
*** ../bash-3.2-patched/version.c	2007-12-14 21:12:29.000000000 -0500
 | 
			
		||||
--- version.c	2008-04-10 08:22:22.000000000 -0400
 | 
			
		||||
***************
 | 
			
		||||
*** 44,47 ****
 | 
			
		||||
--- 44,50 ----
 | 
			
		||||
  const char *sccs_version = SCCSVERSION;
 | 
			
		||||
  
 | 
			
		||||
+ /* If == 31, shell compatible with bash-3.1, == 32 with bash-3.2, and so on */
 | 
			
		||||
+ int shell_compatibility_level = 32;
 | 
			
		||||
+ 
 | 
			
		||||
  /* Functions for getting, setting, and displaying the shell version. */
 | 
			
		||||
  
 | 
			
		||||
*** ../bash-3.2-patched/builtins/shopt.def	2005-02-19 17:25:03.000000000 -0500
 | 
			
		||||
--- builtins/shopt.def	2008-04-10 08:13:32.000000000 -0400
 | 
			
		||||
***************
 | 
			
		||||
*** 102,105 ****
 | 
			
		||||
--- 102,107 ----
 | 
			
		||||
  static int set_shellopts_after_change __P((int));
 | 
			
		||||
  
 | 
			
		||||
+ static int set_compatibility_level __P((int));
 | 
			
		||||
+ 
 | 
			
		||||
  #if defined (RESTRICTED_SHELL)
 | 
			
		||||
  static int set_restricted_shell __P((int));
 | 
			
		||||
***************
 | 
			
		||||
*** 107,110 ****
 | 
			
		||||
--- 109,113 ----
 | 
			
		||||
  
 | 
			
		||||
  static int shopt_login_shell;
 | 
			
		||||
+ static int shopt_compat31;
 | 
			
		||||
  
 | 
			
		||||
  typedef int shopt_set_func_t __P((int));
 | 
			
		||||
***************
 | 
			
		||||
*** 122,125 ****
 | 
			
		||||
--- 125,129 ----
 | 
			
		||||
    { "cmdhist", &command_oriented_history, (shopt_set_func_t *)NULL },
 | 
			
		||||
  #endif
 | 
			
		||||
+   { "compat31", &shopt_compat31, set_compatibility_level },
 | 
			
		||||
    { "dotglob", &glob_dot_filenames, (shopt_set_func_t *)NULL },
 | 
			
		||||
    { "execfail", &no_exit_on_failed_exec, (shopt_set_func_t *)NULL },
 | 
			
		||||
***************
 | 
			
		||||
*** 460,463 ****
 | 
			
		||||
--- 464,479 ----
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
+ static int
 | 
			
		||||
+ set_compatibility_level (mode)
 | 
			
		||||
+      int mode;
 | 
			
		||||
+ {
 | 
			
		||||
+   /* Need to change logic here as we add more compatibility levels */
 | 
			
		||||
+   if (shopt_compat31)
 | 
			
		||||
+     shell_compatibility_level = 31;
 | 
			
		||||
+   else
 | 
			
		||||
+     shell_compatibility_level = 32;
 | 
			
		||||
+   return 0;
 | 
			
		||||
+ }
 | 
			
		||||
+ 
 | 
			
		||||
  #if defined (RESTRICTED_SHELL)
 | 
			
		||||
  /* Don't allow the value of restricted_shell to be modified. */
 | 
			
		||||
*** ../bash-3.2-patched/doc/bash.1	2006-09-28 10:26:05.000000000 -0400
 | 
			
		||||
--- doc/bash.1	2008-04-25 12:32:49.000000000 -0400
 | 
			
		||||
***************
 | 
			
		||||
*** 7978,7981 ****
 | 
			
		||||
--- 8200,8209 ----
 | 
			
		||||
  easy re-editing of multi-line commands.
 | 
			
		||||
  .TP 8
 | 
			
		||||
+ .B compat31
 | 
			
		||||
+ If set,
 | 
			
		||||
+ .B bash
 | 
			
		||||
+ changes its behavior to that of version 3.1 with respect to quoted
 | 
			
		||||
+ arguments to the conditional command's =~ operator.
 | 
			
		||||
+ .TP 8
 | 
			
		||||
  .B dotglob
 | 
			
		||||
  If set, 
 | 
			
		||||
*** ../bash-20080214/doc/bashref.texi	2008-02-08 21:28:35.000000000 -0500
 | 
			
		||||
--- doc/bashref.texi	2008-02-22 21:44:51.000000000 -0500
 | 
			
		||||
***************
 | 
			
		||||
*** 4053,4056 ****
 | 
			
		||||
--- 4061,4069 ----
 | 
			
		||||
  easy re-editing of multi-line commands.
 | 
			
		||||
  
 | 
			
		||||
+ @item compat31
 | 
			
		||||
+ If set, Bash
 | 
			
		||||
+ changes its behavior to that of version 3.1 with respect to quoted
 | 
			
		||||
+ arguments to the conditional command's =~ operator.
 | 
			
		||||
+ 
 | 
			
		||||
  @item dotglob
 | 
			
		||||
  If set, Bash includes filenames beginning with a `.' in
 | 
			
		||||
*** ../bash-3.2-patched/tests/shopt.right	2005-02-19 17:46:09.000000000 -0500
 | 
			
		||||
--- tests/shopt.right	2008-04-28 09:13:07.000000000 -0400
 | 
			
		||||
***************
 | 
			
		||||
*** 7,10 ****
 | 
			
		||||
--- 7,11 ----
 | 
			
		||||
  shopt -u checkwinsize
 | 
			
		||||
  shopt -s cmdhist
 | 
			
		||||
+ shopt -u compat31
 | 
			
		||||
  shopt -u dotglob
 | 
			
		||||
  shopt -u execfail
 | 
			
		||||
***************
 | 
			
		||||
*** 54,57 ****
 | 
			
		||||
--- 55,59 ----
 | 
			
		||||
  shopt -u checkhash
 | 
			
		||||
  shopt -u checkwinsize
 | 
			
		||||
+ shopt -u compat31
 | 
			
		||||
  shopt -u dotglob
 | 
			
		||||
  shopt -u execfail
 | 
			
		||||
***************
 | 
			
		||||
*** 78,81 ****
 | 
			
		||||
--- 80,84 ----
 | 
			
		||||
  checkhash      	off
 | 
			
		||||
  checkwinsize   	off
 | 
			
		||||
+ compat31       	off
 | 
			
		||||
  dotglob        	off
 | 
			
		||||
  execfail       	off
 | 
			
		||||
 | 
			
		||||
*** ../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 38
 | 
			
		||||
  
 | 
			
		||||
  #endif /* _PATCHLEVEL_H_ */
 | 
			
		||||
--- 26,30 ----
 | 
			
		||||
     looks for to find the patch level (for the sccs version string). */
 | 
			
		||||
  
 | 
			
		||||
! #define PATCHLEVEL 39
 | 
			
		||||
  
 | 
			
		||||
  #endif /* _PATCHLEVEL_H_ */
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user