screen-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[screen-devel] [PATCH] Clear scrollback buffer when locking terminal


From: Miroslav Lichvar
Subject: [screen-devel] [PATCH] Clear scrollback buffer when locking terminal
Date: Mon, 18 Jul 2011 17:38:30 +0200

Linux kernel 3.0 adds a new command to clear the scrollback buffer in
the linux console. It's available in the ncurses terminfo entry as
extended capability E3. This is useful to prevent an attacker to read
content of a locked terminal via Shift-PgUp key.
---
 src/display.c |    6 ++++++
 src/extern.h  |    1 +
 src/screen.c  |    1 +
 src/term.c    |    1 +
 4 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/src/display.c b/src/display.c
index 5fa11cb..038c435 100644
--- a/src/display.c
+++ b/src/display.c
@@ -3779,4 +3779,10 @@ char **cmdv;
 
 #endif /* BLANKER_PRG */
 
+void
+ClearScrollbackBuffer()
+{
+  if (D_CE3)
+    AddCStr(D_CE3);
+}
 
diff --git a/src/extern.h b/src/extern.h
index c787d99..d3fecf0 100644
--- a/src/extern.h
+++ b/src/extern.h
@@ -316,6 +316,7 @@ extern int   color256to88 __P((int));
 extern void  ResetIdle __P((void));
 extern void  KillBlanker __P((void));
 extern void  DisplaySleep1000 __P((int, int));
+extern void  ClearScrollbackBuffer __P((void));
 
 /* resize.c */
 extern int   ChangeWindowSize __P((struct win *, int, int, int));
diff --git a/src/screen.c b/src/screen.c
index cc8f565..3efb67b 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -1967,6 +1967,7 @@ int mode;
 #endif
     case D_LOCK:
       ClearAll();
+      ClearScrollbackBuffer();
       sign = SIG_LOCK;
       /* tell attacher to lock terminal with a lockprg. */
       break;
diff --git a/src/term.c b/src/term.c
index 991de1b..7485900 100644
--- a/src/term.c
+++ b/src/term.c
@@ -83,6 +83,7 @@ struct term term[T_N] =
   { "CD", T_STR  },
   { "ce", T_STR  },
   { "cb", T_STR  },
+  { "E3", T_STR  },
 
 /* initialise */
   { "is", T_STR  },
-- 
1.7.6




reply via email to

[Prev in Thread] Current Thread [Next in Thread]