Ondrej Oprala 469c21
			     BASH PATCH REPORT
Ondrej Oprala 469c21
			     =================
Ondrej Oprala 469c21
Ondrej Oprala 469c21
Bash-Release:	4.3
Ondrej Oprala 469c21
Patch-ID:	bash43-041
Ondrej Oprala 469c21
Ondrej Oprala 469c21
Bug-Reported-by:	Hanno Böck <hanno@hboeck.de>
Ondrej Oprala 469c21
Bug-Reference-ID:	<20150623131106.6f111da9@pc1>, <20150707004640.0e61d2f9@pc1>
Ondrej Oprala 469c21
Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2015-06/msg00089.html,
Ondrej Oprala 469c21
			http://lists.gnu.org/archive/html/bug-bash/2015-07/msg00018.html
Ondrej Oprala 469c21
Ondrej Oprala 469c21
Bug-Description:
Ondrej Oprala 469c21
Ondrej Oprala 469c21
There are several out-of-bounds read errors that occur when completing command
Ondrej Oprala 469c21
lines where assignment statements appear before the command name.  The first
Ondrej Oprala 469c21
two appear only when programmable completion is enabled; the last one only
Ondrej Oprala 469c21
happens when listing possible completions.
Ondrej Oprala 469c21
Ondrej Oprala 469c21
Patch (apply with `patch -p0'):
Ondrej Oprala 469c21
Ondrej Oprala 469c21
*** ../bash-4.3.40/bashline.c	2014-12-29 14:39:43.000000000 -0500
Ondrej Oprala 469c21
--- bashline.c	2015-08-12 10:21:58.000000000 -0400
Ondrej Oprala 469c21
***************
Ondrej Oprala 469c21
*** 1469,1476 ****
Ondrej Oprala 469c21
--- 1469,1489 ----
Ondrej Oprala 469c21
        os = start;
Ondrej Oprala 469c21
        n = 0;
Ondrej Oprala 469c21
+       was_assignment = 0;
Ondrej Oprala 469c21
        s = find_cmd_start (os);
Ondrej Oprala 469c21
        e = find_cmd_end (end);
Ondrej Oprala 469c21
        do
Ondrej Oprala 469c21
  	{
Ondrej Oprala 469c21
+ 	  /* Don't read past the end of rl_line_buffer */
Ondrej Oprala 469c21
+ 	  if (s > rl_end)
Ondrej Oprala 469c21
+ 	    {
Ondrej Oprala 469c21
+ 	      s1 = s = e1;
Ondrej Oprala 469c21
+ 	      break;
Ondrej Oprala 469c21
+ 	    }
Ondrej Oprala 469c21
+ 	  /* Or past point if point is within an assignment statement */
Ondrej Oprala 469c21
+ 	  else if (was_assignment && s > rl_point)
Ondrej Oprala 469c21
+ 	    {
Ondrej Oprala 469c21
+ 	      s1 = s = e1;
Ondrej Oprala 469c21
+ 	      break;
Ondrej Oprala 469c21
+ 	    }
Ondrej Oprala 469c21
  	  /* Skip over assignment statements preceding a command name.  If we
Ondrej Oprala 469c21
  	     don't find a command name at all, we can perform command name
Ondrej Oprala 469c21
*** ../bash-4.3.40/lib/readline/complete.c	2013-10-14 09:27:10.000000000 -0400
Ondrej Oprala 469c21
--- lib/readline/complete.c	2015-07-31 09:34:39.000000000 -0400
Ondrej Oprala 469c21
***************
Ondrej Oprala 469c21
*** 690,693 ****
Ondrej Oprala 469c21
--- 690,695 ----
Ondrej Oprala 469c21
    if (temp == 0 || *temp == '\0')
Ondrej Oprala 469c21
      return (pathname);
Ondrej Oprala 469c21
+   else if (temp[1] == 0 && temp == pathname)
Ondrej Oprala 469c21
+     return (pathname);
Ondrej Oprala 469c21
    /* If the basename is NULL, we might have a pathname like '/usr/src/'.
Ondrej Oprala 469c21
       Look for a previous slash and, if one is found, return the portion
Ondrej Oprala 469c21
*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
Ondrej Oprala 469c21
--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
Ondrej Oprala 469c21
***************
Ondrej Oprala 469c21
*** 26,30 ****
Ondrej Oprala 469c21
     looks for to find the patch level (for the sccs version string). */
Ondrej Oprala 469c21
  
Ondrej Oprala 469c21
! #define PATCHLEVEL 40
Ondrej Oprala 469c21
  
Ondrej Oprala 469c21
  #endif /* _PATCHLEVEL_H_ */
Ondrej Oprala 469c21
--- 26,30 ----
Ondrej Oprala 469c21
     looks for to find the patch level (for the sccs version string). */
Ondrej Oprala 469c21
  
Ondrej Oprala 469c21
! #define PATCHLEVEL 41
Ondrej Oprala 469c21
  
Ondrej Oprala 469c21
  #endif /* _PATCHLEVEL_H_ */