aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetr Písař <ppisar@redhat.com>2011-04-15 04:08:08 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2011-04-19 19:33:37 -0400
commitf8df13e0a901fe55631fed66562369b4dba40f8b (patch)
tree105031898b999a9da275a7aa32b5d67733d5b849
parentd94206028854ba4c891004cecdbb2e220bf277bb (diff)
tty: Clean console safely
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ř <ppisar@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/tty/vt/vt.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c
index a48da2063060..b3915b7ad3e2 100644
--- a/drivers/tty/vt/vt.c
+++ b/drivers/tty/vt/vt.c
@@ -1193,6 +1193,13 @@ static void csi_J(struct vc_data *vc, int vpar)
1193 vc->vc_x + 1); 1193 vc->vc_x + 1);
1194 } 1194 }
1195 break; 1195 break;
1196 case 3: /* erase scroll-back buffer (and whole display) */
1197 scr_memsetw(vc->vc_screenbuf, vc->vc_video_erase_char,
1198 vc->vc_screenbuf_size >> 1);
1199 set_origin(vc);
1200 if (CON_IS_VISIBLE(vc))
1201 update_screen(vc);
1202 /* fall through */
1196 case 2: /* erase whole display */ 1203 case 2: /* erase whole display */
1197 count = vc->vc_cols * vc->vc_rows; 1204 count = vc->vc_cols * vc->vc_rows;
1198 start = (unsigned short *)vc->vc_origin; 1205 start = (unsigned short *)vc->vc_origin;