From owner-svn-src-all@FreeBSD.ORG Thu May 21 16:19:54 2009 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 74320106564A; Thu, 21 May 2009 16:19:54 +0000 (UTC) (envelope-from ed@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 62DFB8FC19; Thu, 21 May 2009 16:19:54 +0000 (UTC) (envelope-from ed@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4LGJsau071740; Thu, 21 May 2009 16:19:54 GMT (envelope-from ed@svn.freebsd.org) Received: (from ed@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4LGJsDV071739; Thu, 21 May 2009 16:19:54 GMT (envelope-from ed@svn.freebsd.org) Message-Id: <200905211619.n4LGJsDV071739@svn.freebsd.org> From: Ed Schouten Date: Thu, 21 May 2009 16:19:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192544 - head/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 May 2009 16:19:55 -0000 Author: ed Date: Thu May 21 16:19:54 2009 New Revision: 192544 URL: http://svn.freebsd.org/changeset/base/192544 Log: Add a new sysctl: kern.tty_inq_flush_secure. When enabled all TTY input queue buffers are zeroed when flushing or closing the TTY. Because TTY input queues are also used to store filled in passwords, this may be an interesting switch to enable for security minded people. Modified: head/sys/kern/tty_inq.c Modified: head/sys/kern/tty_inq.c ============================================================================== --- head/sys/kern/tty_inq.c Thu May 21 16:18:45 2009 (r192543) +++ head/sys/kern/tty_inq.c Thu May 21 16:19:54 2009 (r192544) @@ -68,6 +68,9 @@ SYSCTL_ULONG(_kern, OID_AUTO, tty_inq_nf static unsigned long ttyinq_nslow = 0; SYSCTL_ULONG(_kern, OID_AUTO, tty_inq_nslow, CTLFLAG_RD, &ttyinq_nslow, 0, "Buffered reads to userspace on input"); +static int ttyinq_flush_secure = 0; +SYSCTL_INT(_kern, OID_AUTO, tty_inq_flush_secure, CTLFLAG_RW, + &ttyinq_flush_secure, 0, "Zero buffers while flushing"); #define TTYINQ_QUOTESIZE (TTYINQ_DATASIZE / BMSIZE) #define BMSIZE 32 @@ -376,28 +379,19 @@ ttyinq_findchar(struct ttyinq *ti, const void ttyinq_flush(struct ttyinq *ti) { + struct ttyinq_block *tib = ti->ti_lastblock; ti->ti_begin = 0; ti->ti_linestart = 0; ti->ti_reprint = 0; ti->ti_end = 0; -} - -#if 0 -void -ttyinq_flush_safe(struct ttyinq *ti) -{ - struct ttyinq_block *tib; - - ttyinq_flush(ti); - /* Zero all data in the input queue to make it more safe */ - TAILQ_FOREACH(tib, &ti->ti_list, tib_list) { - bzero(&tib->tib_quotes, sizeof tib->tib_quotes); - bzero(&tib->tib_data, sizeof tib->tib_data); + /* Zero all data in the input queue to get rid of passwords. */ + if (ttyinq_flush_secure) { + for (tib = ti->ti_firstblock; tib != NULL; tib = tib->tib_next) + bzero(&tib->tib_data, sizeof tib->tib_data); } } -#endif int ttyinq_peekchar(struct ttyinq *ti, char *c, int *quote)