lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 10 Jul 2018 17:52:01 -0700 From: Kees Cook <keescook@...omium.org> To: Nicolas Pitre <nicolas.pitre@...aro.org> Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>, Dave Mielke <Dave@...lke.cc>, Samuel Thibault <samuel.thibault@...-lyon.org>, Adam Borowski <kilobyte@...band.pl>, Alan Cox <gnomes@...rguk.ukuu.org.uk>, LKML <linux-kernel@...r.kernel.org>, linux-console@...r.kernel.org Subject: Re: [PATCH v3 1/3] vt: preserve unicode values corresponding to screen characters On Tue, Jun 26, 2018 at 8:56 PM, Nicolas Pitre <nicolas.pitre@...aro.org> wrote: > The vt code translates UTF-8 strings into glyph index values and stores > those glyph values directly in the screen buffer. Because there can only > be at most 512 glyphs, it is impossible to represent most unicode > characters, in which case a default glyph (often '?') is displayed > instead. The original unicode value is then lost. > > This patch implements the basic screen buffer handling to preserve unicode > values alongside corresponding display glyphs. It is not activated by > default, meaning that people not relying on that functionality won't get > the implied overhead. > > Signed-off-by: Nicolas Pitre <nico@...aro.org> > Tested-by: Dave Mielke <Dave@...lke.cc> > Acked-by: Adam Borowski <kilobyte@...band.pl> > --- > drivers/tty/vt/vt.c | 220 +++++++++++++++++++++++++++++++-- > include/linux/console_struct.h | 2 + > 2 files changed, 211 insertions(+), 11 deletions(-) > > diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c > index 1eb1a376a0..7b636638b3 100644 > --- a/drivers/tty/vt/vt.c > +++ b/drivers/tty/vt/vt.c > [...] > +static void vc_uniscr_scroll(struct vc_data *vc, unsigned int t, unsigned int b, > + enum con_scroll dir, unsigned int nr) > +{ > + struct uni_screen *uniscr = get_vc_uniscr(vc); > + > + if (uniscr) { > + unsigned int s, d, rescue, clear; > + char32_t *save[nr]; Can you adjust this to avoid the VLA here? I've almost gotten all VLAs removed from the kernel[1], and this is introducing a new one. :) Thanks! -Kees [1] https://lkml.kernel.org/r/CA+55aFzCG-zNmZwX4A2FQpadafLfEzK6CC=qPXydAacU1RqZWA@mail.gmail.com > + > + s = clear = t; > + d = t + nr; > + rescue = b - nr; > + if (dir == SM_UP) { > + swap(s, d); > + swap(clear, rescue); > + } > + memcpy(save, uniscr->lines + rescue, nr * sizeof(*save)); > + memmove(uniscr->lines + d, uniscr->lines + s, > + (b - t - nr) * sizeof(*uniscr->lines)); > + memcpy(uniscr->lines + clear, save, nr * sizeof(*save)); > + vc_uniscr_clear_lines(vc, clear, nr); > + } > +} -- Kees Cook Pixel Security
Powered by blists - more mailing lists