0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

patch 7.4.695

Problem:    Out-of-bounds read, dectected by Coverity.
Solution:   Remember the value of cmap for the first matching encoding.  Reset
            cmap to that value if first matching encoding is going to be used.
            (Eliseo Martínez)
This commit is contained in:
Bram Moolenaar 2015-04-13 14:45:27 +02:00
parent 83d1b19015
commit 7c94ce910f
2 changed files with 10 additions and 0 deletions

View File

@ -2513,13 +2513,18 @@ mch_print_init(psettings, jobname, forceit)
props = enc_canon_props(p_encoding);
if (!(props & ENC_8BIT) && ((*p_pmcs != NUL) || !(props & ENC_UNICODE)))
{
int cmap_first;
p_mbenc_first = NULL;
for (cmap = 0; cmap < (int)NUM_ELEMENTS(prt_ps_mbfonts); cmap++)
if (prt_match_encoding((char *)p_encoding, &prt_ps_mbfonts[cmap],
&p_mbenc))
{
if (p_mbenc_first == NULL)
{
p_mbenc_first = p_mbenc;
cmap_first = cmap;
}
if (prt_match_charset((char *)p_pmcs, &prt_ps_mbfonts[cmap],
&p_mbchar))
break;
@ -2527,7 +2532,10 @@ mch_print_init(psettings, jobname, forceit)
/* Use first encoding matched if no charset matched */
if (p_mbchar == NULL && p_mbenc_first != NULL)
{
p_mbenc = p_mbenc_first;
cmap = cmap_first;
}
}
prt_out_mbyte = (p_mbenc != NULL);

View File

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