From 7c94ce910f07e0d76d66b46bccfe39a07d8e1f6d Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Mon, 13 Apr 2015 14:45:27 +0200 Subject: =?UTF-8?q?patch=207.4.695=20Problem:=20=20=20=20Out-of-bounds=20r?= =?UTF-8?q?ead,=20dectected=20by=20Coverity.=20Solution:=20=20=20Remember?= =?UTF-8?q?=20the=20value=20of=20cmap=20for=20the=20first=20matching=20enc?= =?UTF-8?q?oding.=20=20Reset=20=20=20=20=20=20=20=20=20=20=20=20=20cmap=20?= =?UTF-8?q?to=20that=20value=20if=20first=20matching=20encoding=20is=20goi?= =?UTF-8?q?ng=20to=20be=20used.=20=20=20=20=20=20=20=20=20=20=20=20=20(Eli?= =?UTF-8?q?seo=20Mart=C3=ADnez)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hardcopy.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/hardcopy.c') diff --git a/src/hardcopy.c b/src/hardcopy.c index 95a367d496..b2e400f906 100644 --- a/src/hardcopy.c +++ b/src/hardcopy.c @@ -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); -- cgit v1.2.3