[vim/f13] Patchlevel 160

Karsten Hopp karsten at fedoraproject.org
Tue Jun 7 09:55:16 UTC 2011


commit 70040e2426b30ab41a3e87952f4e648d9f0ef4f5
Author: Karsten Hopp <karsten at redhat.com>
Date:   Tue Jun 7 11:44:17 2011 +0200

    Patchlevel 160

 7.3.160 |  482 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 482 insertions(+), 0 deletions(-)
---
diff --git a/7.3.160 b/7.3.160
new file mode 100644
index 0000000..bf3a069
--- /dev/null
+++ b/7.3.160
@@ -0,0 +1,482 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.160
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.160
+Problem:    Unsafe string copying.
+Solution:   Use vim_strncpy() instead of strcpy().  Use vim_strcat() instead
+	    of strcat().
+Files:	    src/buffer.c, src/ex_docmd.c, src/hardcopy.c, src/menu.c,
+	    src/misc1.c, src/misc2.c, src/proto/misc2.pro, src/netbeans.c,
+	    src/os_unix.c, src/spell.c, src/syntax.c, src/tag.c
+
+*** ../vim-7.3.159/src/buffer.c	2011-02-15 14:24:42.000000000 +0100
+--- src/buffer.c	2011-04-11 16:08:38.000000000 +0200
+***************
+*** 3176,3182 ****
+  	    /* format: "fname + (path) (1 of 2) - VIM" */
+  
+  	    if (curbuf->b_fname == NULL)
+! 		STRCPY(buf, _("[No Name]"));
+  	    else
+  	    {
+  		p = transstr(gettail(curbuf->b_fname));
+--- 3176,3182 ----
+  	    /* format: "fname + (path) (1 of 2) - VIM" */
+  
+  	    if (curbuf->b_fname == NULL)
+! 		vim_strncpy(buf, (char_u *)_("[No Name]"), IOSIZE - 100);
+  	    else
+  	    {
+  		p = transstr(gettail(curbuf->b_fname));
+***************
+*** 3232,3238 ****
+  	    if (serverName != NULL)
+  	    {
+  		STRCAT(buf, " - ");
+! 		STRCAT(buf, serverName);
+  	    }
+  	    else
+  #endif
+--- 3232,3238 ----
+  	    if (serverName != NULL)
+  	    {
+  		STRCAT(buf, " - ");
+! 		vim_strcat(buf, serverName, IOSIZE);
+  	    }
+  	    else
+  #endif
+*** ../vim-7.3.159/src/ex_docmd.c	2011-03-03 15:54:45.000000000 +0100
+--- src/ex_docmd.c	2011-04-11 15:43:48.000000000 +0200
+***************
+*** 5096,5102 ****
+  		char_u	buff[IOSIZE];
+  
+  		if (n == 1)
+! 		    STRCPY(buff, _("1 more file to edit.  Quit anyway?"));
+  		else
+  		    vim_snprintf((char *)buff, IOSIZE,
+  			      _("%d more files to edit.  Quit anyway?"), n);
+--- 5096,5104 ----
+  		char_u	buff[IOSIZE];
+  
+  		if (n == 1)
+! 		    vim_strncpy(buff,
+! 			    (char_u *)_("1 more file to edit.  Quit anyway?"),
+! 								  IOSIZE - 1);
+  		else
+  		    vim_snprintf((char *)buff, IOSIZE,
+  			      _("%d more files to edit.  Quit anyway?"), n);
+*** ../vim-7.3.159/src/hardcopy.c	2010-08-15 21:57:25.000000000 +0200
+--- src/hardcopy.c	2011-04-11 15:30:09.000000000 +0200
+***************
+*** 1761,1772 ****
+  {
+      char_u	buffer[MAXPATHL + 1];
+  
+!     STRCPY(resource->name, name);
+      /* Look for named resource file in runtimepath */
+      STRCPY(buffer, "print");
+      add_pathsep(buffer);
+!     STRCAT(buffer, name);
+!     STRCAT(buffer, ".ps");
+      resource->filename[0] = NUL;
+      return (do_in_runtimepath(buffer, FALSE, prt_resource_name,
+  							   resource->filename)
+--- 1761,1772 ----
+  {
+      char_u	buffer[MAXPATHL + 1];
+  
+!     vim_strncpy(resource->name, (char_u *)name, 63);
+      /* Look for named resource file in runtimepath */
+      STRCPY(buffer, "print");
+      add_pathsep(buffer);
+!     vim_strcat(buffer, (char_u *)name, MAXPATHL);
+!     vim_strcat(buffer, (char_u *)".ps", MAXPATHL);
+      resource->filename[0] = NUL;
+      return (do_in_runtimepath(buffer, FALSE, prt_resource_name,
+  							   resource->filename)
+*** ../vim-7.3.159/src/menu.c	2011-01-04 17:49:25.000000000 +0100
+--- src/menu.c	2011-04-11 15:17:21.000000000 +0200
+***************
+*** 1394,1400 ****
+      int		idx;
+  {
+      static vimmenu_T	*menu = NULL;
+!     static char_u	tbuffer[256]; /*hack*/
+      char_u		*str;
+  #ifdef FEAT_MULTI_LANG
+      static  int		should_advance = FALSE;
+--- 1394,1401 ----
+      int		idx;
+  {
+      static vimmenu_T	*menu = NULL;
+! #define TBUFFER_LEN 256
+!     static char_u	tbuffer[TBUFFER_LEN]; /*hack*/
+      char_u		*str;
+  #ifdef FEAT_MULTI_LANG
+      static  int		should_advance = FALSE;
+***************
+*** 1428,1438 ****
+  	{
+  #ifdef FEAT_MULTI_LANG
+  	    if (should_advance)
+! 		STRCPY(tbuffer, menu->en_dname);
+  	    else
+  	    {
+  #endif
+! 		STRCPY(tbuffer, menu->dname);
+  #ifdef FEAT_MULTI_LANG
+  		if (menu->en_dname == NULL)
+  		    should_advance = TRUE;
+--- 1429,1439 ----
+  	{
+  #ifdef FEAT_MULTI_LANG
+  	    if (should_advance)
+! 		vim_strncpy(tbuffer, menu->en_dname, TBUFFER_LEN - 2);
+  	    else
+  	    {
+  #endif
+! 		vim_strncpy(tbuffer, menu->dname,  TBUFFER_LEN - 2);
+  #ifdef FEAT_MULTI_LANG
+  		if (menu->en_dname == NULL)
+  		    should_advance = TRUE;
+*** ../vim-7.3.159/src/misc1.c	2011-04-11 14:27:34.000000000 +0200
+--- src/misc1.c	2011-04-11 16:03:22.000000000 +0200
+***************
+*** 3332,3350 ****
+  	if (pn == 1)
+  	{
+  	    if (n > 0)
+! 		STRCPY(msg_buf, _("1 more line"));
+  	    else
+! 		STRCPY(msg_buf, _("1 line less"));
+  	}
+  	else
+  	{
+  	    if (n > 0)
+! 		sprintf((char *)msg_buf, _("%ld more lines"), pn);
+  	    else
+! 		sprintf((char *)msg_buf, _("%ld fewer lines"), pn);
+  	}
+  	if (got_int)
+! 	    STRCAT(msg_buf, _(" (Interrupted)"));
+  	if (msg(msg_buf))
+  	{
+  	    set_keep_msg(msg_buf, 0);
+--- 3332,3354 ----
+  	if (pn == 1)
+  	{
+  	    if (n > 0)
+! 		vim_strncpy(msg_buf, (char_u *)_("1 more line"),
+! 							     MSG_BUF_LEN - 1);
+  	    else
+! 		vim_strncpy(msg_buf, (char_u *)_("1 line less"),
+! 							     MSG_BUF_LEN - 1);
+  	}
+  	else
+  	{
+  	    if (n > 0)
+! 		vim_snprintf((char *)msg_buf, MSG_BUF_LEN,
+! 						     _("%ld more lines"), pn);
+  	    else
+! 		vim_snprintf((char *)msg_buf, MSG_BUF_LEN,
+! 						    _("%ld fewer lines"), pn);
+  	}
+  	if (got_int)
+! 	    vim_strcat(msg_buf, (char_u *)_(" (Interrupted)"), MSG_BUF_LEN);
+  	if (msg(msg_buf))
+  	{
+  	    set_keep_msg(msg_buf, 0);
+*** ../vim-7.3.159/src/misc2.c	2010-12-08 13:11:15.000000000 +0100
+--- src/misc2.c	2011-04-11 15:30:20.000000000 +0200
+***************
+*** 1647,1652 ****
+--- 1647,1674 ----
+  }
+  
+  /*
++  * Like strcat(), but make sure the result fits in "tosize" bytes and is
++  * always NUL terminated.
++  */
++     void
++ vim_strcat(to, from, tosize)
++     char_u	*to;
++     char_u	*from;
++     size_t	tosize;
++ {
++     size_t tolen = STRLEN(to);
++     size_t fromlen = STRLEN(from);
++ 
++     if (tolen + fromlen + 1 > tosize)
++     {
++ 	mch_memmove(to + tolen, from, tosize - tolen - 1);
++ 	to[tosize - 1] = NUL;
++     }
++     else
++ 	STRCPY(to + tolen, from);
++ }
++ 
++ /*
+   * Isolate one part of a string option where parts are separated with
+   * "sep_chars".
+   * The part is copied into "buf[maxlen]".
+*** ../vim-7.3.159/src/proto/misc2.pro	2010-08-15 21:57:28.000000000 +0200
+--- src/proto/misc2.pro	2011-04-11 15:29:55.000000000 +0200
+***************
+*** 40,45 ****
+--- 40,46 ----
+  void copy_chars __ARGS((char_u *ptr, size_t count, int c));
+  void del_trailing_spaces __ARGS((char_u *ptr));
+  void vim_strncpy __ARGS((char_u *to, char_u *from, size_t len));
++ void vim_strcat __ARGS((char_u *to, char_u *from, size_t tosize));
+  int copy_option_part __ARGS((char_u **option, char_u *buf, int maxlen, char *sep_chars));
+  void vim_free __ARGS((void *x));
+  int vim_stricmp __ARGS((char *s1, char *s2));
+*** ../vim-7.3.159/src/netbeans.c	2011-04-01 15:33:54.000000000 +0200
+--- src/netbeans.c	2011-04-11 16:02:51.000000000 +0200
+***************
+*** 3914,3927 ****
+      }
+      else
+      {
+! 	char_u ebuf[BUFSIZ];
+  
+! 	STRCPY(ebuf, (char_u *)_("E505: "));
+! 	STRCAT(ebuf, IObuff);
+! 	STRCAT(ebuf, (char_u *)_("is read-only (add ! to override)"));
+! 	STRCPY(IObuff, ebuf);
+! 	nbdebug(("    %s\n", ebuf ));
+! 	emsg(IObuff);
+      }
+  }
+  
+--- 3914,3925 ----
+      }
+      else
+      {
+! 	char_u msgbuf[IOSIZE];
+  
+! 	vim_snprintf((char *)msgbuf, IOSIZE,
+! 		_("E505: %s is read-only (add ! to override)"), IObuff);
+! 	nbdebug(("    %s\n", msgbuf));
+! 	emsg(msgbuf);
+      }
+  }
+  
+*** ../vim-7.3.159/src/os_unix.c	2011-02-15 17:39:14.000000000 +0100
+--- src/os_unix.c	2011-04-11 16:39:11.000000000 +0200
+***************
+*** 5725,5730 ****
+--- 5725,5731 ----
+  	if (shell_style == STYLE_PRINT && !did_find_nul)
+  	{
+  	    /* If there is a NUL, set did_find_nul, else set check_spaces */
++ 	    buffer[len] = NUL;
+  	    if (len && (int)STRLEN(buffer) < (int)len - 1)
+  		did_find_nul = TRUE;
+  	    else
+***************
+*** 6594,6600 ****
+  	    xterm_hints.x = 2;
+  	return TRUE;
+      }
+!     if (mouse_code == NULL)
+      {
+  	xterm_trace = 0;
+  	return FALSE;
+--- 6595,6601 ----
+  	    xterm_hints.x = 2;
+  	return TRUE;
+      }
+!     if (mouse_code == NULL || STRLEN(mouse_code) > 45)
+      {
+  	xterm_trace = 0;
+  	return FALSE;
+*** ../vim-7.3.159/src/spell.c	2011-02-01 13:59:44.000000000 +0100
+--- src/spell.c	2011-04-11 15:50:40.000000000 +0200
+***************
+*** 6957,6963 ****
+  			    if (ae->ae_add == NULL)
+  				*newword = NUL;
+  			    else
+! 				STRCPY(newword, ae->ae_add);
+  			    p = word;
+  			    if (ae->ae_chop != NULL)
+  			    {
+--- 6957,6963 ----
+  			    if (ae->ae_add == NULL)
+  				*newword = NUL;
+  			    else
+! 				vim_strncpy(newword, ae->ae_add, MAXWLEN - 1);
+  			    p = word;
+  			    if (ae->ae_chop != NULL)
+  			    {
+***************
+*** 6978,6984 ****
+  			else
+  			{
+  			    /* suffix: chop/add at the end of the word */
+! 			    STRCPY(newword, word);
+  			    if (ae->ae_chop != NULL)
+  			    {
+  				/* Remove chop string. */
+--- 6978,6984 ----
+  			else
+  			{
+  			    /* suffix: chop/add at the end of the word */
+! 			    vim_strncpy(newword, word, MAXWLEN - 1);
+  			    if (ae->ae_chop != NULL)
+  			    {
+  				/* Remove chop string. */
+***************
+*** 8654,8660 ****
+       * Write the .sug file.
+       * Make the file name by changing ".spl" to ".sug".
+       */
+!     STRCPY(fname, wfname);
+      len = (int)STRLEN(fname);
+      fname[len - 2] = 'u';
+      fname[len - 1] = 'g';
+--- 8654,8660 ----
+       * Write the .sug file.
+       * Make the file name by changing ".spl" to ".sug".
+       */
+!     vim_strncpy(fname, wfname, MAXPATHL - 1);
+      len = (int)STRLEN(fname);
+      fname[len - 2] = 'u';
+      fname[len - 1] = 'g';
+***************
+*** 10261,10267 ****
+  
+  	    /* The suggested word may replace only part of the bad word, add
+  	     * the not replaced part. */
+! 	    STRCPY(wcopy, stp->st_word);
+  	    if (sug.su_badlen > stp->st_orglen)
+  		vim_strncpy(wcopy + stp->st_wordlen,
+  					       sug.su_badptr + stp->st_orglen,
+--- 10261,10267 ----
+  
+  	    /* The suggested word may replace only part of the bad word, add
+  	     * the not replaced part. */
+! 	    vim_strncpy(wcopy, stp->st_word, MAXWLEN);
+  	    if (sug.su_badlen > stp->st_orglen)
+  		vim_strncpy(wcopy + stp->st_wordlen,
+  					       sug.su_badptr + stp->st_orglen,
+***************
+*** 13162,13168 ****
+  	pbad = badsound2;
+      }
+  
+!     if (lendiff > 0)
+      {
+  	/* Add part of the bad word to the good word, so that we soundfold
+  	 * what replaces the bad word. */
+--- 13162,13168 ----
+  	pbad = badsound2;
+      }
+  
+!     if (lendiff > 0 && stp->st_wordlen + lendiff < MAXWLEN)
+      {
+  	/* Add part of the bad word to the good word, so that we soundfold
+  	 * what replaces the bad word. */
+***************
+*** 13875,13881 ****
+      for (i = gap->ga_len - 1; i >= 0; --i)
+      {
+  	/* Need to append what follows to check for "the the". */
+! 	STRCPY(longword, stp[i].st_word);
+  	len = stp[i].st_wordlen;
+  	vim_strncpy(longword + len, su->su_badptr + stp[i].st_orglen,
+  							       MAXWLEN - len);
+--- 13875,13881 ----
+      for (i = gap->ga_len - 1; i >= 0; --i)
+      {
+  	/* Need to append what follows to check for "the the". */
+! 	vim_strncpy(longword, stp[i].st_word, MAXWLEN);
+  	len = stp[i].st_wordlen;
+  	vim_strncpy(longword + len, su->su_badptr + stp[i].st_orglen,
+  							       MAXWLEN - len);
+***************
+*** 14221,14227 ****
+  	*t = NUL;
+      }
+      else
+! 	STRCPY(word, s);
+  
+      smp = (salitem_T *)slang->sl_sal.ga_data;
+  
+--- 14221,14227 ----
+  	*t = NUL;
+      }
+      else
+! 	vim_strncpy(word, s, MAXWLEN - 1);
+  
+      smp = (salitem_T *)slang->sl_sal.ga_data;
+  
+*** ../vim-7.3.159/src/syntax.c	2011-04-02 15:12:45.000000000 +0200
+--- src/syntax.c	2011-04-11 15:44:30.000000000 +0200
+***************
+*** 8576,8583 ****
+  		if (iarg & hl_attr_table[i])
+  		{
+  		    if (buf[0] != NUL)
+! 			STRCAT(buf, ",");
+! 		    STRCAT(buf, hl_name_table[i]);
+  		    iarg &= ~hl_attr_table[i];	    /* don't want "inverse" */
+  		}
+  	    }
+--- 8576,8583 ----
+  		if (iarg & hl_attr_table[i])
+  		{
+  		    if (buf[0] != NUL)
+! 			vim_strcat(buf, (char_u *)",", 100);
+! 		    vim_strcat(buf, (char_u *)hl_name_table[i], 100);
+  		    iarg &= ~hl_attr_table[i];	    /* don't want "inverse" */
+  		}
+  	    }
+*** ../vim-7.3.159/src/tag.c	2011-02-25 15:13:43.000000000 +0100
+--- src/tag.c	2011-04-11 15:34:59.000000000 +0200
+***************
+*** 806,812 ****
+  		    p = tag_full_fname(&tagp);
+  		    if (p == NULL)
+  			continue;
+! 		    STRCPY(fname, p);
+  		    vim_free(p);
+  
+  		    /*
+--- 806,812 ----
+  		    p = tag_full_fname(&tagp);
+  		    if (p == NULL)
+  			continue;
+! 		    vim_strncpy(fname, p, MAXPATHL);
+  		    vim_free(p);
+  
+  		    /*
+*** ../vim-7.3.159/src/version.c	2011-04-11 14:29:13.000000000 +0200
+--- src/version.c	2011-04-11 16:50:53.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     160,
+  /**/
+
+-- 
+If someone questions your market projections, simply point out that your
+target market is "People who are nuts" and "People who will buy any damn
+thing".  Nobody is going to tell you there aren't enough of those people
+to go around.
+				(Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///


More information about the scm-commits mailing list