From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752521AbcGUMxo (ORCPT ); Thu, 21 Jul 2016 08:53:44 -0400 Received: from mail-wm0-f68.google.com ([74.125.82.68]:34947 "EHLO mail-wm0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752175AbcGUMxl (ORCPT ); Thu, 21 Jul 2016 08:53:41 -0400 Subject: Re: [PATCH] Clean console safely To: =?UTF-8?B?UGV0ciBQw61zYcWZ?= , Greg Kroah-Hartman References: <25B374CC0D9DFB4698BB331F82CD0CF2E3EC04@wdscexbe08.sc.wdc.com> <1302854888-3606-1-git-send-email-ppisar@redhat.com> Cc: Alan Cox , linux-kernel@vger.kernel.org, Artem Bityutskiy , Chris Ball , Daniel Taylor From: Jiri Slaby Message-ID: Date: Thu, 21 Jul 2016 14:53:37 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.1.1 MIME-Version: 1.0 In-Reply-To: <1302854888-3606-1-git-send-email-ppisar@redhat.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 04/15/2011, 10:08 AM, Petr Písař wrote: > Traditional \E[2J sequence erases console display but scroll-back > buffer and underlying device (frame) buffer keep data that can be > accessed by scrolling console back. > > This patch introduce new \E[J parameter 3 that allows to scramble > scroll-back buffer explicitly. Session locking programs (screen, > vlock) can use it to prevent attacker to browse locked console > history. > > Signed-off-by: Petr Písař > --- > drivers/tty/vt/vt.c | 7 +++++++ > 1 files changed, 7 insertions(+), 0 deletions(-) > > diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c > index 4bea1ef..cb661ca 100644 > --- a/drivers/tty/vt/vt.c > +++ b/drivers/tty/vt/vt.c > @@ -1197,6 +1197,13 @@ static void csi_J(struct vc_data *vc, int vpar) > vc->vc_x + 1); > } > break; > + case 3: /* erase scroll-back buffer (and whole display) */ > + scr_memsetw(vc->vc_screenbuf, vc->vc_video_erase_char, > + vc->vc_screenbuf_size >> 1); Why is here the division? I suppose this is superfluous, given scr_memsetw proper divides the size, hm? > + set_origin(vc); > + if (CON_IS_VISIBLE(vc)) > + update_screen(vc); > + /* fall through */ > case 2: /* erase whole display */ > count = vc->vc_cols * vc->vc_rows; > start = (unsigned short *)vc->vc_origin; > -- js