All of lore.kernel.org
 help / color / mirror / Atom feed
* [kbd] [PATCH] vlock: Handle tty dying
@ 2014-09-26  5:42 Kyle Manna
  2015-01-23 17:46 ` Dmitry V. Levin
  0 siblings, 1 reply; 5+ messages in thread
From: Kyle Manna @ 2014-09-26  5:42 UTC (permalink / raw)
  To: kbd

[-- Attachment #1: Type: text/plain, Size: 720 bytes --]

Hi guys,

I ran into a problem where if vlock was running over ssh and the ssh
session died my system logs would get spammed by the now orphaned vlock
process on Arch Linux:

    Sep 25 20:51:12 hostname vlock[31336]: pam_unix(vlock:auth): auth could not identify password for [user]
    Sep 25 20:51:13 hostname vlock[31336]: pam_unix(vlock:auth): auth could not identify password for [user]
    Sep 25 20:51:14 hostname vlock[31336]: pam_unix(vlock:auth): auth could not identify password for [user]

I was able to re-create this in many other situations (ssh, xterm
window/tab, tmux window/pane, etc).

The patch know checks for a tty on stdin where PAM will likely ask for
the password and exits if it's not found.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-vlock-Handle-tty-dying.patch --]
[-- Type: text/x-diff, Size: 1158 bytes --]

From ec97bfb838ff45a1f7c3a640cb29f7eeb2718db3 Mon Sep 17 00:00:00 2001
From: Kyle Manna <kyle@kylemanna.com>
Date: Thu, 25 Sep 2014 22:22:17 -0700
Subject: [PATCH] vlock: Handle tty dying

* Gracefully exit when the parent tty dies.
* Typical causes of death include closing:
    * terminal tab or window
    * shell
    * ssh session
* If no tty exists, I'm not sure what vlock would be locking.

Signed-off-by: Kyle Manna <kyle@kylemanna.com>
---
 src/vlock/auth.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/src/vlock/auth.c b/src/vlock/auth.c
index da135ce..79b1319 100644
--- a/src/vlock/auth.c
+++ b/src/vlock/auth.c
@@ -67,6 +67,17 @@ get_password (pam_handle_t * pamh, const char *username, const char *tty)
 		int     rc;
 		const char *msg;
 
+		/* Ensure that the process has a tty.  If the parent had died,
+		 * stdin/out are likely no longer valid and PAM will fail continuously.
+		 */
+		if (isatty(STDIN_FILENO) != 1)
+		{
+			syslog (LOG_INFO,
+				"TTY %s disappeared for %s by (uid=%u)",
+				tty, username, uid);
+			return EXIT_FAILURE;
+		}
+
 		if (!pamh)
 		{
 			pamh = init_pam (username, tty, 1);
-- 
2.1.1



^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-01-25 11:18 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-26  5:42 [kbd] [PATCH] vlock: Handle tty dying Kyle Manna
2015-01-23 17:46 ` Dmitry V. Levin
2015-01-23 17:47   ` [kbd] [PATCH 1/2] vlock: move some code around Dmitry V. Levin
2015-01-23 17:49   ` [kbd] [PATCH 2/2] vlock: handle disappearing ttys gracefully Dmitry V. Levin
2015-01-25 11:18   ` [kbd] [PATCH] vlock: Handle tty dying Alexey Gladkov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.