Date: Thu, 24 May 2001 17:10:02 -0700 (PDT) From: Dima Dorfman <dima@unixfreak.org> To: freebsd-bugs@FreeBSD.org Subject: Re: kern/27616: Syscons history permits peeking in the previous session output Message-ID: <200105250010.f4P0A2H05202@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/27616; it has been noted by GNATS.
From: Dima Dorfman <dima@unixfreak.org>
To: yar@freebsd.org
Cc: freebsd-gnats-submit@FreeBSD.org
Subject: Re: kern/27616: Syscons history permits peeking in the previous session output
Date: Thu, 24 May 2001 17:02:12 -0700
Dima Dorfman <dima@unixfreak.org> writes:
> The following reply was made to PR kern/27616; it has been noted by GNATS.
>
> From: Dima Dorfman <dima@unixfreak.org>
> To: Yar Tikhiy <yar@freebsd.org>
> Cc: freebsd-gnats-submit@FreeBSD.org
> Subject: Re: kern/27616: Syscons history permits peeking in the previous sess
> ion output
> Date: Thu, 24 May 2001 16:54:13 -0700
>
> Yar Tikhiy <yar@freebsd.org> writes:
> > On Thu, May 24, 2001 at 03:33:59PM +0100, David Malone wrote:
> > > > >How-To-Repeat:
> > > >
> > > > Log off a FreeBSD vty, hit ScrollLock, scroll to the
> > > > terminated session contents using Up or PageUp and see your
> > > > decrypted love-letters, private talks etc.
> > >
> > > Couldn't you set the size of the scroll-back buffer to zero if this
> > > upsets you or your users? (kbdcontrol -h 1 will effectively do this).
> >
> > First, one wouldn't like to lose the history buffer at all.
> > Second, it's neither me nor my users who is upset by the issue.
> > It's a general security problem, though.
> >
> > > Alot of terminal emulators would have this problem.
> >
> > A lot of operating systems are buggy crap. FreeBSD is not ;-)
> >
> > > (Loosing the scroll back buffer on logout would be likely to upset
> > > some people 'cos it means that console log messages would be erased.)
> >
> > Let it be a per-vty configurable option.
>
> How about adding an option to kbdcontrol(1) to clear the buffer? If
> the user knows they've been reading love letters, they can clear it
> manually. Or if they're always reading love letters, they can stick
> `kbdcontrol -c' in .logout and forget about it. This has the
> fortunate sideaffects of giving the user an option of *when* to clear
> it and *if* to clear it.
>
> Trivial patch attached.
>
> Thoughts?
Okay, I goofed. I hit 'sent' instead of 'sign' :-/. Here's the patch
as mentioned above.
Dima Dorfman
dima@unixfreak.org
Index: sys/sys/consio.h
===================================================================
RCS file: /stl/src/FreeBSD/src/sys/sys/consio.h,v
retrieving revision 1.8
diff -u -r1.8 consio.h
--- sys/sys/consio.h 2001/05/18 09:01:53 1.8
+++ sys/sys/consio.h 2001/05/24 23:50:42
@@ -116,6 +116,9 @@
/* set the history (scroll back) buffer size (in lines) */
#define CONS_HISTORY _IOW('c', 9, int)
+/* clear the history (scroll back) buffer */
+#define CONS_CLRHIST _IO('c', 10)
+
/* mouse cursor ioctl */
struct mouse_data {
int x;
Index: sys/dev/syscons/schistory.c
===================================================================
RCS file: /stl/src/FreeBSD/src/sys/dev/syscons/schistory.c,v
retrieving revision 1.11
diff -u -r1.11 schistory.c
--- sys/dev/syscons/schistory.c 2000/10/08 21:33:54 1.11
+++ sys/dev/syscons/schistory.c 2001/05/24 23:50:42
@@ -299,6 +299,12 @@
DPRINTF(5, ("error:%d, rows:%d, pool:%d\n", error,
sc_vtb_rows(scp->history), extra_history_size));
return error;
+
+ case CONS_CLRHIST:
+ scp = SC_STAT(tp->t_dev);
+ sc_vtb_clear(scp->history, scp->sc->scr_map[0x20],
+ SC_NORM_ATTR << 8);
+ return 0;
}
return ENOIOCTL;
Index: usr.sbin/kbdcontrol/kbdcontrol.1
===================================================================
RCS file: /stl/src/FreeBSD/src/usr.sbin/kbdcontrol/kbdcontrol.1,v
retrieving revision 1.28
diff -u -r1.28 kbdcontrol.1
--- usr.sbin/kbdcontrol/kbdcontrol.1 2001/05/16 09:40:12 1.28
+++ usr.sbin/kbdcontrol/kbdcontrol.1 2001/05/24 23:50:42
@@ -13,7 +13,7 @@
.\" @(#)kbdcontrol.1
.\" $FreeBSD: src/usr.sbin/kbdcontrol/kbdcontrol.1,v 1.28 2001/05/16 09:40:12 ru Exp $
.\"
-.Dd June 30, 1999
+.Dd May 24, 2001
.Dt KBDCONTROL 1
.Os FreeBSD
.Sh NAME
@@ -21,7 +21,7 @@
.Nd a utility for manipulating the syscons console driver
.Sh SYNOPSIS
.Nm
-.Op Fl dFKix
+.Op Fl cdFKix
.Oo
.Fl b
.Ar duration . Ns Ar pitch | Ar belltype
@@ -97,6 +97,8 @@
.Ar keymap_file .
You may load the keyboard map file from a menu-driven command,
.Xr kbdmap 1 .
+.It Fl c
+Clear the history buffer.
.It Fl d
Dump the current keyboard map onto stdout.
The output may be redirected to a file and can be loaded
Index: usr.sbin/kbdcontrol/kbdcontrol.c
===================================================================
RCS file: /stl/src/FreeBSD/src/usr.sbin/kbdcontrol/kbdcontrol.c,v
retrieving revision 1.36
diff -u -r1.36 kbdcontrol.c
--- usr.sbin/kbdcontrol/kbdcontrol.c 2001/05/15 22:53:05 1.36
+++ usr.sbin/kbdcontrol/kbdcontrol.c 2001/05/24 23:50:42
@@ -980,6 +980,14 @@
warn("setting history buffer size");
}
+void
+clear_history()
+{
+
+ if (ioctl(0, CONS_CLRHIST) == -1)
+ warn("clear history buffer");
+}
+
static char
*get_kbd_type_name(int type)
{
@@ -1079,7 +1087,7 @@
usage()
{
fprintf(stderr, "%s\n%s\n%s\n",
-"usage: kbdcontrol [-dFKix] [-b duration.pitch | [quiet.]belltype]",
+"usage: kbdcontrol [-cdFKix] [-b duration.pitch | [quiet.]belltype]",
" [-r delay.repeat | speed] [-l mapfile] [-f # string]",
" [-h size] [-k device] [-L mapfile]");
exit(1);
@@ -1091,10 +1099,13 @@
{
int opt;
- while((opt = getopt(argc, argv, "b:df:h:iKk:Fl:L:r:x")) != -1)
+ while((opt = getopt(argc, argv, "b:cdf:h:iKk:Fl:L:r:x")) != -1)
switch(opt) {
case 'b':
set_bell_values(optarg);
+ break;
+ case 'c':
+ clear_history();
break;
case 'd':
print_keymap();
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200105250010.f4P0A2H05202>
