Karsten Hopp e99f3d
To: vim_dev@googlegroups.com
Karsten Hopp e99f3d
Subject: Patch 7.3.112
Karsten Hopp e99f3d
Fcc: outbox
Karsten Hopp e99f3d
From: Bram Moolenaar <Bram@moolenaar.net>
Karsten Hopp e99f3d
Mime-Version: 1.0
Karsten Hopp e99f3d
Content-Type: text/plain; charset=UTF-8
Karsten Hopp e99f3d
Content-Transfer-Encoding: 8bit
Karsten Hopp e99f3d
------------
Karsten Hopp e99f3d
Karsten Hopp e99f3d
Patch 7.3.112
Karsten Hopp e99f3d
Problem:    Setting 'statusline' to "%!'asdf%' reads uninitialized memory.
Karsten Hopp e99f3d
Solution:   Check for NUL after %.
Karsten Hopp e99f3d
Files:	    src/buffer.c
Karsten Hopp e99f3d
Karsten Hopp e99f3d
Karsten Hopp e99f3d
*** ../vim-7.3.111/src/buffer.c	2010-10-27 16:17:56.000000000 +0200
Karsten Hopp e99f3d
--- src/buffer.c	2011-02-01 21:40:17.000000000 +0100
Karsten Hopp e99f3d
***************
Karsten Hopp e99f3d
*** 3364,3370 ****
Karsten Hopp e99f3d
   * or truncated if too long, fillchar is used for all whitespace.
Karsten Hopp e99f3d
   */
Karsten Hopp e99f3d
      int
Karsten Hopp e99f3d
! build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar, maxwidth, hltab, tabtab)
Karsten Hopp e99f3d
      win_T	*wp;
Karsten Hopp e99f3d
      char_u	*out;		/* buffer to write into != NameBuff */
Karsten Hopp e99f3d
      size_t	outlen;		/* length of out[] */
Karsten Hopp e99f3d
--- 3364,3371 ----
Karsten Hopp e99f3d
   * or truncated if too long, fillchar is used for all whitespace.
Karsten Hopp e99f3d
   */
Karsten Hopp e99f3d
      int
Karsten Hopp e99f3d
! build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar,
Karsten Hopp e99f3d
! 						      maxwidth, hltab, tabtab)
Karsten Hopp e99f3d
      win_T	*wp;
Karsten Hopp e99f3d
      char_u	*out;		/* buffer to write into != NameBuff */
Karsten Hopp e99f3d
      size_t	outlen;		/* length of out[] */
Karsten Hopp e99f3d
***************
Karsten Hopp e99f3d
*** 3474,3479 ****
Karsten Hopp e99f3d
--- 3475,3482 ----
Karsten Hopp e99f3d
  	 * Handle one '%' item.
Karsten Hopp e99f3d
  	 */
Karsten Hopp e99f3d
  	s++;
Karsten Hopp e99f3d
+ 	if (*s == NUL)  /* ignore trailing % */
Karsten Hopp e99f3d
+ 	    break;
Karsten Hopp e99f3d
  	if (*s == '%')
Karsten Hopp e99f3d
  	{
Karsten Hopp e99f3d
  	    if (p + 1 >= out + outlen)
Karsten Hopp e99f3d
*** ../vim-7.3.111/src/version.c	2011-02-01 18:01:06.000000000 +0100
Karsten Hopp e99f3d
--- src/version.c	2011-02-01 21:54:01.000000000 +0100
Karsten Hopp e99f3d
***************
Karsten Hopp e99f3d
*** 716,717 ****
Karsten Hopp e99f3d
--- 716,719 ----
Karsten Hopp e99f3d
  {   /* Add new patch number below this line */
Karsten Hopp e99f3d
+ /**/
Karsten Hopp e99f3d
+     112,
Karsten Hopp e99f3d
  /**/
Karsten Hopp e99f3d
Karsten Hopp e99f3d
-- 
Karsten Hopp e99f3d
Rule #1: Don't give somebody a tool that he's going to hurt himself with.
Karsten Hopp e99f3d
Karsten Hopp e99f3d
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
Karsten Hopp e99f3d
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
Karsten Hopp e99f3d
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
Karsten Hopp e99f3d
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///