clear scrollback buffer before locking linux terminal (#683733)

epel9
Miroslav Lichvar 14 years ago
parent 1a18be266a
commit 3f891b1869

@ -0,0 +1,62 @@
commit 0aec2900f63820c3405ba38a4d1cd67cc22f0715
Author: Miroslav Lichvar <mlichvar@redhat.com>
Date: Mon Jul 18 17:26:47 2011 +0200
Clear scrollback buffer when locking terminal
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.
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 },

@ -23,6 +23,7 @@ Patch1: screen-4.0.3-libs.patch
Patch2: screen-4.0.3-screenrc.patch
Patch3: screen-ipv6.patch
Patch4: screen-cc.patch
Patch5: screen-E3.patch
%description
The screen utility allows you to have multiple logins on just one
@ -40,6 +41,7 @@ support multiple logins on one terminal.
%patch2 -p1 -b .screenrc
%patch3 -p2 -b .ipv6
%patch4 -p2 -b .cc
%patch5 -p2 -b .E3
%build
./autogen.sh

Loading…
Cancel
Save