aboutsummaryrefslogtreecommitdiff
path: root/usr.bin
diff options
context:
space:
mode:
authorOlivier Houchard <cognet@FreeBSD.org>2006-02-21 13:01:00 +0000
committerOlivier Houchard <cognet@FreeBSD.org>2006-02-21 13:01:00 +0000
commitb457a3e19cd7c0d83dae9681c658dab8317da8df (patch)
treec5c9433b584c538f5c632cb200b65fd6c24cd3ea /usr.bin
parentc15ff0bc7bccdc23c1124363a8b24f4393b9e3b0 (diff)
Notes
Diffstat (limited to 'usr.bin')
-rw-r--r--usr.bin/wall/wall.c15
-rw-r--r--usr.bin/who/who.c24
2 files changed, 36 insertions, 3 deletions
diff --git a/usr.bin/wall/wall.c b/usr.bin/wall/wall.c
index 35d6463cdd91..1a1d2a383732 100644
--- a/usr.bin/wall/wall.c
+++ b/usr.bin/wall/wall.c
@@ -81,6 +81,19 @@ int nobanner;
int mbufsize;
char *mbuf;
+static int
+ttystat(char *line, int sz)
+{
+ struct stat sb;
+ char ttybuf[MAXPATHLEN];
+
+ (void)snprintf(ttybuf, sizeof(ttybuf), "%s%.*s", _PATH_DEV, sz, line);
+ if (stat(ttybuf, &sb) == 0) {
+ return (0);
+ } else
+ return (-1);
+}
+
int
main(int argc, char *argv[])
{
@@ -140,6 +153,8 @@ main(int argc, char *argv[])
while (fread((char *)&utmp, sizeof(utmp), 1, fp) == 1) {
if (!utmp.ut_name[0])
continue;
+ if (ttystat(utmp.ut_line, UT_LINESIZE) != 0)
+ continue;
if (grouplist) {
ingroup = 0;
strlcpy(username, utmp.ut_name, sizeof(utmp.ut_name));
diff --git a/usr.bin/who/who.c b/usr.bin/who/who.c
index 27b68960c2bc..f94fcdb34743 100644
--- a/usr.bin/who/who.c
+++ b/usr.bin/who/who.c
@@ -27,6 +27,7 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
+#include <sys/param.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
@@ -203,14 +204,31 @@ row(struct utmp *ut)
putchar('\n');
}
+static int
+ttystat(char *line, int sz)
+{
+ struct stat sb;
+ char ttybuf[MAXPATHLEN];
+
+ (void)snprintf(ttybuf, sizeof(ttybuf), "%s%.*s", _PATH_DEV, sz, line);
+ if (stat(ttybuf, &sb) == 0) {
+ return (0);
+ } else
+ return (-1);
+}
+
static void
process_utmp(FILE *fp)
{
struct utmp ut;
- while (fread(&ut, sizeof(ut), 1, fp) == 1)
- if (*ut.ut_name != '\0')
- row(&ut);
+ while (fread(&ut, sizeof(ut), 1, fp) == 1) {
+ if (*ut.ut_name == '\0')
+ continue;
+ if (ttystat(ut.ut_line, UT_LINESIZE) != 0)
+ continue;
+ row(&ut);
+ }
}
static void