99b86a7
To: vim-dev@vim.org
99b86a7
Subject: patch 7.1.032
99b86a7
Fcc: outbox
99b86a7
From: Bram Moolenaar <Bram@moolenaar.net>
99b86a7
Mime-Version: 1.0
99b86a7
Content-Type: text/plain; charset=ISO-8859-1
99b86a7
Content-Transfer-Encoding: 8bit
99b86a7
------------
99b86a7
99b86a7
Patch 7.1.032
99b86a7
Problem:    Potential crash when editing a command line. (Chris Monson)
99b86a7
Solution:   Check the position to avoid access before the start of an array.
99b86a7
Files:	    src/ex_getln.c
99b86a7
99b86a7
99b86a7
*** ../vim-7.1.031/src/ex_getln.c	Thu May 10 20:22:29 2007
99b86a7
--- src/ex_getln.c	Tue Jul 17 18:05:49 2007
99b86a7
***************
99b86a7
*** 484,490 ****
99b86a7
  	if (xpc.xp_context == EXPAND_MENUNAMES && p_wmnu)
99b86a7
  	{
99b86a7
  	    /* Hitting <Down> after "emenu Name.": complete submenu */
99b86a7
! 	    if (ccline.cmdbuff[ccline.cmdpos - 1] == '.' && c == K_DOWN)
99b86a7
  		c = p_wc;
99b86a7
  	    else if (c == K_UP)
99b86a7
  	    {
99b86a7
--- 486,493 ----
99b86a7
  	if (xpc.xp_context == EXPAND_MENUNAMES && p_wmnu)
99b86a7
  	{
99b86a7
  	    /* Hitting <Down> after "emenu Name.": complete submenu */
99b86a7
! 	    if (c == K_DOWN && ccline.cmdpos > 0
99b86a7
! 				  && ccline.cmdbuff[ccline.cmdpos - 1] == '.')
99b86a7
  		c = p_wc;
99b86a7
  	    else if (c == K_UP)
99b86a7
  	    {
99b86a7
***************
99b86a7
*** 533,541 ****
99b86a7
  	    upseg[3] = PATHSEP;
99b86a7
  	    upseg[4] = NUL;
99b86a7
  
99b86a7
! 	    if (ccline.cmdbuff[ccline.cmdpos - 1] == PATHSEP
99b86a7
! 		    && c == K_DOWN
99b86a7
! 		    && (ccline.cmdbuff[ccline.cmdpos - 2] != '.'
99b86a7
  			|| ccline.cmdbuff[ccline.cmdpos - 3] != '.'))
99b86a7
  	    {
99b86a7
  		/* go down a directory */
99b86a7
--- 536,546 ----
99b86a7
  	    upseg[3] = PATHSEP;
99b86a7
  	    upseg[4] = NUL;
99b86a7
  
99b86a7
! 	    if (c == K_DOWN
99b86a7
! 		    && ccline.cmdpos > 0
99b86a7
! 		    && ccline.cmdbuff[ccline.cmdpos - 1] == PATHSEP
99b86a7
! 		    && (ccline.cmdpos < 3
99b86a7
! 			|| ccline.cmdbuff[ccline.cmdpos - 2] != '.'
99b86a7
  			|| ccline.cmdbuff[ccline.cmdpos - 3] != '.'))
99b86a7
  	    {
99b86a7
  		/* go down a directory */
99b86a7
***************
99b86a7
*** 730,737 ****
99b86a7
  	    /* In Ex mode a backslash escapes a newline. */
99b86a7
  	    if (exmode_active
99b86a7
  		    && c != ESC
99b86a7
- 		    && ccline.cmdpos > 0
99b86a7
  		    && ccline.cmdpos == ccline.cmdlen
99b86a7
  		    && ccline.cmdbuff[ccline.cmdpos - 1] == '\\')
99b86a7
  	    {
99b86a7
  		if (c == K_KENTER)
99b86a7
--- 735,742 ----
99b86a7
  	    /* In Ex mode a backslash escapes a newline. */
99b86a7
  	    if (exmode_active
99b86a7
  		    && c != ESC
99b86a7
  		    && ccline.cmdpos == ccline.cmdlen
99b86a7
+ 		    && ccline.cmdpos > 0
99b86a7
  		    && ccline.cmdbuff[ccline.cmdpos - 1] == '\\')
99b86a7
  	    {
99b86a7
  		if (c == K_KENTER)
99b86a7
*** ../vim-7.1.031/src/version.c	Tue Jul 17 16:31:15 2007
99b86a7
--- src/version.c	Tue Jul 17 18:10:37 2007
99b86a7
***************
99b86a7
*** 668,669 ****
99b86a7
--- 668,671 ----
99b86a7
  {   /* Add new patch number below this line */
99b86a7
+ /**/
99b86a7
+     32,
99b86a7
  /**/
99b86a7
99b86a7
-- 
99b86a7
ALL:   A witch!  A witch!
99b86a7
WITCH: It's a fair cop.
99b86a7
ALL:   Burn her!  Burn her!  Let's make her into a ladder.
99b86a7
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
99b86a7
99b86a7
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
99b86a7
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
99b86a7
\\\        download, build and distribute -- http://www.A-A-P.org        ///
99b86a7
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///