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