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