0
0
mirror of https://github.com/vim/vim.git synced 2025-09-29 04:34:16 -04:00

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.
This commit is contained in:
Bram Moolenaar
2019-02-12 20:46:48 +01:00
parent 05c00c038b
commit 0ea21e41c6
2 changed files with 10 additions and 2 deletions

View File

@@ -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);

View File

@@ -783,6 +783,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
898,
/**/
897,
/**/