changeset 15782:5de143c7cd76 v8.1.0898

patch 8.1.0898: a messed up rgb.txt can crash Vim commit https://github.com/vim/vim/commit/0ea21e41c6789c356762f970ecf168a897dcf8b6 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Feb 12 20:46:48 2019 +0100 patch 8.1.0898: a messed up rgb.txt can crash Vim Problem: A messed up rgb.txt can crash Vim. (Pavel Cheremushkin) Solution: Limit to 10000 entries. Also don't retry many times when the file cannot be read.
author Bram Moolenaar <Bram@vim.org>
date Tue, 12 Feb 2019 21:00:09 +0100
parents 650911968ad2
children d83ab0d685b8
files src/term.c src/version.c
diffstat 2 files changed, 10 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/term.c
+++ b/src/term.c
@@ -6985,13 +6985,13 @@ gui_get_color_cmn(char_u *name)
 	    return rgb_table[i].color;
 
     /*
-     * Last attempt. Look in the file "$VIM/rgb.txt".
+     * Last attempt. Look in the file "$VIMRUNTIME/rgb.txt".
      */
     if (size == 0)
     {
 	int counting;
 
-	/* colornames_table not yet initialized */
+	// colornames_table not yet initialized
 	fname = expand_env_save((char_u *)"$VIMRUNTIME/rgb.txt");
 	if (fname == NULL)
 	    return INVALCOLOR;
@@ -7002,6 +7002,7 @@ gui_get_color_cmn(char_u *name)
 	{
 	    if (p_verbose > 1)
 		verb_msg(_("Cannot open $VIMRUNTIME/rgb.txt"));
+	    size = -1;  // don't try again
 	    return INVALCOLOR;
 	}
 
@@ -7050,6 +7051,11 @@ gui_get_color_cmn(char_u *name)
 		    colornames_table[size].color = (guicolor_T)RGB(r, g, b);
 		}
 		size++;
+
+		// The distributed rgb.txt has less than 1000 entries. Limit to
+		// 10000, just in case the file was messed up.
+		if (size == 10000)
+		    break;
 	    }
 	}
 	fclose(fd);
--- a/src/version.c
+++ b/src/version.c
@@ -784,6 +784,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    898,
+/**/
     897,
 /**/
     896,