[Midnightbsd-cvs] src: usr.bin/wall: sync with freebsd 7

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Fri Mar 27 18:29:03 EDT 2009


Log Message:
-----------
sync with freebsd 7

Modified Files:
--------------
    src/usr.bin/wall:
        ttymsg.c (r1.1.1.1 -> r1.2)
        wall.c (r1.1.1.1 -> r1.2)

-------------- next part --------------
Index: ttymsg.c
===================================================================
RCS file: /home/cvs/src/usr.bin/wall/ttymsg.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L usr.bin/wall/ttymsg.c -L usr.bin/wall/ttymsg.c -u -r1.1.1.1 -r1.2
--- usr.bin/wall/ttymsg.c
+++ usr.bin/wall/ttymsg.c
@@ -33,7 +33,7 @@
 
 #include <sys/cdefs.h>
 
-__FBSDID("$FreeBSD: src/usr.bin/wall/ttymsg.c,v 1.11 2002/10/11 14:58:34 mike Exp $");
+__FBSDID("$FreeBSD: src/usr.bin/wall/ttymsg.c,v 1.12 2006/01/27 08:52:14 ume Exp $");
 
 #ifndef lint
 static const char sccsid[] = "@(#)ttymsg.c	8.2 (Berkeley) 11/16/93";
@@ -68,14 +68,18 @@
 	int cnt, fd;
 	static char device[MAXNAMLEN] = _PATH_DEV;
 	static char errbuf[1024];
+	char *p;
 	int forked;
 
 	forked = 0;
 	if (iovcnt > (int)(sizeof(localiov) / sizeof(localiov[0])))
 		return ("too many iov's (change code in wall/ttymsg.c)");
 
-	strlcpy(device + sizeof(_PATH_DEV) - 1, line, sizeof(device));
-	if (strchr(device + sizeof(_PATH_DEV) - 1, '/')) {
+	p = device + sizeof(_PATH_DEV) - 1;
+	strlcpy(p, line, sizeof(device));
+	if (strncmp(p, "pts/", 4) == 0)
+		p += 4;
+	if (strchr(p, '/') != NULL) {
 		/* A slash is an attempt to break security... */
 		(void) snprintf(errbuf, sizeof(errbuf),
 		    "Too many '/' in \"%s\"", device);
Index: wall.c
===================================================================
RCS file: /home/cvs/src/usr.bin/wall/wall.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L usr.bin/wall/wall.c -L usr.bin/wall/wall.c -u -r1.1.1.1 -r1.2
--- usr.bin/wall/wall.c
+++ usr.bin/wall/wall.c
@@ -33,7 +33,7 @@
 
 #include <sys/cdefs.h>
 
-__FBSDID("$FreeBSD: src/usr.bin/wall/wall.c,v 1.23 2003/02/21 08:46:44 tjr Exp $");
+__FBSDID("$FreeBSD: src/usr.bin/wall/wall.c,v 1.24 2006/02/21 13:01:00 cognet Exp $");
 
 #ifndef lint
 static const char copyright[] =
@@ -81,6 +81,19 @@
 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 @@
 	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));


More information about the Midnightbsd-cvs mailing list