Skip to content

Commit b067537

Browse files
committed
fbdev: bitblit: fix bound-check glyph index in bit_putcs for cjktty
deepin inclusion category: bugfix charcount in cjk 16*16 and cjk 32*32 is 65536 * 2, so do this logic to map the source, c_utf = utf8_pos(vc, s); if (ch == 0xff) src = fontdata + (c_utf * cellsize_utf * 2); else src = fontdata + (c_utf * cellsize_utf * 2 + cellsize_utf); Fixes 258dc83 ("fbdev: Add bounds checking in bit_putcs to fix vmalloc-out-of-bounds") Signed-off-by: Wentao Guan <guanwentao@uniontech.com>
1 parent dc20ca4 commit b067537

1 file changed

Lines changed: 11 additions & 11 deletions

File tree

drivers/video/fbdev/core/bitblit.c

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ u8 *font_bits(struct vc_data *vc, const u16 *s, u32 cellsize, u16 charmask,
6666
u16 ch = scr_readw(s) & charmask;
6767
const struct font_desc *font;
6868

69+
fontdata = ops ? ops->fontbuffer : vc->vc_font.data;
6970
if (ch == 0xff || ch == 0xfe) {
7071
/* assume current font not support unicode */
7172
if (charcnt < 65536) {
@@ -75,22 +76,21 @@ u8 *font_bits(struct vc_data *vc, const u16 *s, u32 cellsize, u16 charmask,
7576
font = find_font(fontname);
7677
fontdata = (font && font->data) ? (void *) font->data : NULL;
7778
}
78-
if (fontdata) {
79-
c_utf = utf8_pos(vc, s);
80-
if (ch == 0xff)
81-
src = fontdata + (c_utf * cellsize_utf * 2);
82-
else
83-
src = fontdata + (c_utf * cellsize_utf * 2 + cellsize_utf);
84-
return src;
85-
}
86-
/* ch=0 for fontdata=0 */
87-
ch = 0;
8879
}
80+
if (fontdata) {
81+
c_utf = utf8_pos(vc, s);
82+
if (ch == 0xff)
83+
src = fontdata + (c_utf * cellsize_utf * 2);
84+
else
85+
src = fontdata + (c_utf * cellsize_utf * 2 + cellsize_utf);
86+
return src;
87+
}
88+
/* ch=0 for fontdata=0 */
89+
ch = 0;
8990
} else if (ch >= charcnt) {
9091
ch = 0;
9192
}
9293

93-
fontdata = ops ? ops->fontbuffer : vc->vc_font.data;
9494
src = fontdata + (unsigned int)ch * cellsize;
9595
return src;
9696
}

0 commit comments

Comments
 (0)