git: db11c57a6cf3 - main - usr.bin/who.c: Fix boot time checking

From: Steve Wills <swills_at_FreeBSD.org>
Date: Sat, 12 Mar 2022 16:50:30 UTC
The branch main has been updated by swills (ports committer):

URL: https://cgit.FreeBSD.org/src/commit/?id=db11c57a6cf3053fb09185975cfbe3729f2fbe44

commit db11c57a6cf3053fb09185975cfbe3729f2fbe44
Author:     Steve Wills <swills@FreeBSD.org>
AuthorDate: 2022-03-12 16:48:24 +0000
Commit:     Steve Wills <swills@FreeBSD.org>
CommitDate: 2022-03-12 16:49:49 +0000

    usr.bin/who.c: Fix boot time checking
    
    The boot time entry doesn't have a tty specified, so don't check it.
    While here, make ttystat handle that case.
    
    Approved by:    kevans (src)
    Differential Revision:  https://reviews.freebsd.org/D34524
---
 usr.bin/who/who.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/usr.bin/who/who.c b/usr.bin/who/who.c
index 6ad4f18c3b78..add2fb27a27a 100644
--- a/usr.bin/who/who.c
+++ b/usr.bin/who/who.c
@@ -216,6 +216,8 @@ ttystat(char *line)
 	struct stat sb;
 	char ttybuf[MAXPATHLEN];
 
+	if (line == NULL)
+		return (0);
 	(void)snprintf(ttybuf, sizeof(ttybuf), "%s%s", _PATH_DEV, line);
 	if (stat(ttybuf, &sb) == 0) {
 		return (0);
@@ -229,10 +231,11 @@ process_utmp(void)
 	struct utmpx *utx;
 
 	while ((utx = getutxent()) != NULL) {
-		if (((aflag || !bflag) && utx->ut_type == USER_PROCESS) ||
-		    (bflag && utx->ut_type == BOOT_TIME))
+		if ((aflag || !bflag) && utx->ut_type == USER_PROCESS) {
 			if (ttystat(utx->ut_line) == 0)
 				row(utx);
+		} else if (bflag && utx->ut_type == BOOT_TIME)
+				row(utx);
 	}
 }