Blame SOURCES/screen-E3.patch

4055a3
commit 0aec2900f63820c3405ba38a4d1cd67cc22f0715
4055a3
Author: Miroslav Lichvar <mlichvar@redhat.com>
4055a3
Date:   Mon Jul 18 17:26:47 2011 +0200
4055a3
4055a3
    Clear scrollback buffer when locking terminal
4055a3
    
4055a3
    Linux kernel 3.0 adds a new command to clear the scrollback buffer in
4055a3
    the linux console. It's available in the ncurses terminfo entry as
4055a3
    extended capability E3. This is useful to prevent an attacker to read
4055a3
    content of a locked terminal via Shift-PgUp key.
4055a3
4055a3
diff --git a/src/display.c b/src/display.c
4055a3
index 5fa11cb..038c435 100644
4055a3
--- a/src/display.c
4055a3
+++ b/src/display.c
4055a3
@@ -3779,4 +3779,10 @@ char **cmdv;
4055a3
 
4055a3
 #endif /* BLANKER_PRG */
4055a3
 
4055a3
+void
4055a3
+ClearScrollbackBuffer()
4055a3
+{
4055a3
+  if (D_CE3)
4055a3
+    AddCStr(D_CE3);
4055a3
+}
4055a3
 
4055a3
diff --git a/src/extern.h b/src/extern.h
4055a3
index c787d99..d3fecf0 100644
4055a3
--- a/src/extern.h
4055a3
+++ b/src/extern.h
4055a3
@@ -316,6 +316,7 @@ extern int   color256to88 __P((int));
4055a3
 extern void  ResetIdle __P((void));
4055a3
 extern void  KillBlanker __P((void));
4055a3
 extern void  DisplaySleep1000 __P((int, int));
4055a3
+extern void  ClearScrollbackBuffer __P((void));
4055a3
 
4055a3
 /* resize.c */
4055a3
 extern int   ChangeWindowSize __P((struct win *, int, int, int));
4055a3
diff --git a/src/screen.c b/src/screen.c
4055a3
index cc8f565..3efb67b 100644
4055a3
--- a/src/screen.c
4055a3
+++ b/src/screen.c
4055a3
@@ -1967,6 +1967,7 @@ int mode;
4055a3
 #endif
4055a3
     case D_LOCK:
4055a3
       ClearAll();
4055a3
+      ClearScrollbackBuffer();
4055a3
       sign = SIG_LOCK;
4055a3
       /* tell attacher to lock terminal with a lockprg. */
4055a3
       break;
4055a3
diff --git a/src/term.c b/src/term.c
4055a3
index 991de1b..7485900 100644
4055a3
--- a/src/term.c
4055a3
+++ b/src/term.c
4055a3
@@ -83,6 +83,7 @@ struct term term[T_N] =
4055a3
   { "CD", T_STR  },
4055a3
   { "ce", T_STR  },
4055a3
   { "cb", T_STR  },
4055a3
+  { "E3", T_STR  },
4055a3
 
4055a3
 /* initialise */
4055a3
   { "is", T_STR  },