Roman Rakus f6ffed
			     BASH PATCH REPORT
Roman Rakus f6ffed
			     =================
Roman Rakus f6ffed
Roman Rakus f6ffed
Bash-Release:	4.2
Roman Rakus f6ffed
Patch-ID:	bash42-045
Roman Rakus f6ffed
Roman Rakus f6ffed
Bug-Reported-by:	Stephane Chazelas <stephane.chazelas@gmail.com>
Roman Rakus f6ffed
Bug-Reference-ID:	<20130218195539.GA9620@chaz.gmail.com>
Roman Rakus f6ffed
Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2013-02/msg00080.html
Roman Rakus f6ffed
Roman Rakus f6ffed
Bug-Description:
Roman Rakus f6ffed
Roman Rakus f6ffed
The <&n- and >&n- redirections, which move one file descriptor to another,
Roman Rakus f6ffed
leave the file descriptor closed when applied to builtins or compound
Roman Rakus f6ffed
commands.
Roman Rakus f6ffed
Roman Rakus f6ffed
Patch (apply with `patch -p0'):
Roman Rakus f6ffed
Roman Rakus f6ffed
*** ../bash-4.2-patched/redir.c	2013-01-30 11:56:09.000000000 -0500
Roman Rakus f6ffed
--- redir.c	2013-02-19 09:38:36.000000000 -0500
Roman Rakus f6ffed
***************
Roman Rakus f6ffed
*** 1008,1011 ****
Roman Rakus f6ffed
--- 1008,1021 ----
Roman Rakus f6ffed
  	      REDIRECTION_ERROR (r, errno, -1);
Roman Rakus f6ffed
  	    }
Roman Rakus f6ffed
+ 	  if ((flags & RX_UNDOABLE) && (ri == r_move_input || ri == r_move_output))
Roman Rakus f6ffed
+ 	    {
Roman Rakus f6ffed
+ 	      /* r_move_input and r_move_output add an additional close()
Roman Rakus f6ffed
+ 		 that needs to be undone */
Roman Rakus f6ffed
+ 	      if (fcntl (redirector, F_GETFD, 0) != -1)
Roman Rakus f6ffed
+ 		{
Roman Rakus f6ffed
+ 		  r = add_undo_redirect (redir_fd, r_close_this, -1);
Roman Rakus f6ffed
+ 		  REDIRECTION_ERROR (r, errno, -1);
Roman Rakus f6ffed
+ 		}
Roman Rakus f6ffed
+ 	    }
Roman Rakus f6ffed
  #if defined (BUFFERED_INPUT)
Roman Rakus f6ffed
  	  check_bash_input (redirector);
Roman Rakus f6ffed
Roman Rakus f6ffed
*** ../bash-4.2-patched/patchlevel.h	Sat Jun 12 20:14:48 2010
Roman Rakus f6ffed
--- patchlevel.h	Thu Feb 24 21:41:34 2011
Roman Rakus f6ffed
***************
Roman Rakus f6ffed
*** 26,30 ****
Roman Rakus f6ffed
     looks for to find the patch level (for the sccs version string). */
Roman Rakus f6ffed
  
Roman Rakus f6ffed
! #define PATCHLEVEL 44
Roman Rakus f6ffed
  
Roman Rakus f6ffed
  #endif /* _PATCHLEVEL_H_ */
Roman Rakus f6ffed
--- 26,30 ----
Roman Rakus f6ffed
     looks for to find the patch level (for the sccs version string). */
Roman Rakus f6ffed
  
Roman Rakus f6ffed
! #define PATCHLEVEL 45
Roman Rakus f6ffed
  
Roman Rakus f6ffed
  #endif /* _PATCHLEVEL_H_ */