Module Name:    src
Committed By:   christos
Date:           Sun Jun 11 14:34:49 UTC 2017

Modified Files:
        src/external/bsd/tmux/usr.bin/tmux: utempter.c

Log Message:
PR/52288: ben: Fix utmp cleanup did not work.
XXX: pullup-8


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/external/bsd/tmux/usr.bin/tmux/utempter.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/bsd/tmux/usr.bin/tmux/utempter.c
diff -u src/external/bsd/tmux/usr.bin/tmux/utempter.c:1.1 src/external/bsd/tmux/usr.bin/tmux/utempter.c:1.2
--- src/external/bsd/tmux/usr.bin/tmux/utempter.c:1.1	Sat Apr 22 22:02:00 2017
+++ src/external/bsd/tmux/usr.bin/tmux/utempter.c	Sun Jun 11 10:34:49 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: utempter.c,v 1.1 2017/04/23 02:02:00 christos Exp $	*/
+/*	$NetBSD: utempter.c,v 1.2 2017/06/11 14:34:49 christos Exp $	*/
 
 /*-
  * Copyright (c) 2011, 2017 The NetBSD Foundation, Inc.
@@ -36,7 +36,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: utempter.c,v 1.1 2017/04/23 02:02:00 christos Exp $");
+__RCSID("$NetBSD: utempter.c,v 1.2 2017/06/11 14:34:49 christos Exp $");
 
 #include <sys/types.h>
 #include <sys/param.h>
@@ -86,9 +86,9 @@ login_utmpx(const char *username, const 
 }
 
 static void
-logout_utmpx(const char *tty, const struct timeval *now)
+logout_utmpx(const char *username, const char *tty, const struct timeval *now)
 {
-	doutmpx("", "", tty, now, DEAD_PROCESS, 0);
+	doutmpx(username, "", tty, now, DEAD_PROCESS, 0);
 }
 #endif
 
@@ -108,7 +108,8 @@ login_utmp(const char *username, const c
 }
 
 static void
-logout_utmp(const char *tty, const struct timeval *now __unused)
+logout_utmp(const char *username __unused,
+    const char *tty, const struct timeval *now __unused)
 {
 	logout(tty);
 }
@@ -142,17 +143,22 @@ static int
 utmp_destroy(int fd)
 {
 	struct timeval tv;
+	char username[LOGIN_NAME_MAX];
 	char tty[128], *ttyp;
 
+	if (getlogin_r(username, sizeof(username)) == -1)
+		return -1;
+
 	if ((errno = ttyname_r(fd, tty, sizeof(tty))) != 0)
 		return -1;
+
 	ttyp = tty + sizeof(_PATH_DEV) - 1;
 	(void)gettimeofday(&tv, NULL);
 #ifdef SUPPORT_UTMPX
-	logout_utmpx(ttyp, &tv);
+	logout_utmpx(username, ttyp, &tv);
 #endif
 #ifdef SUPPORT_UTMP
-	logout_utmp(ttyp, &tv);
+	logout_utmp(username, ttyp, &tv);
 #endif
 	return 0;
 }

Reply via email to