diff options
author | peter <peter@FreeBSD.org> | 1999-11-17 15:28:45 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 1999-11-17 15:28:45 +0000 |
commit | 6bdffedcb9b1df9502bdd21183f9a73368bbc372 (patch) | |
tree | bc86a7a2d7e79b3c54f762de225e07063f09d78f | |
parent | f6968a45e699c9984182f62f527d954e31bae663 (diff) | |
download | FreeBSD-src-6bdffedcb9b1df9502bdd21183f9a73368bbc372.zip FreeBSD-src-6bdffedcb9b1df9502bdd21183f9a73368bbc372.tar.gz |
Use the same technique as ps(1) to avoid the need for setgid. (ie: use
/dev/null as the default kernel and /dev/mem filenames, but still allow
the usual overrides)
-rw-r--r-- | usr.bin/w/Makefile | 5 | ||||
-rw-r--r-- | usr.bin/w/w.c | 9 |
2 files changed, 9 insertions, 5 deletions
diff --git a/usr.bin/w/Makefile b/usr.bin/w/Makefile index c7296b0..1f0af4e 100644 --- a/usr.bin/w/Makefile +++ b/usr.bin/w/Makefile @@ -1,12 +1,13 @@ # @(#)Makefile 8.1 (Berkeley) 6/6/93 +# $FreeBSD$ PROG= w SRCS= fmt.c pr_time.c proc_compare.c w.c MAN1= w.1 uptime.1 DPADD= ${LIBKVM} LDADD= -lkvm -BINGRP= kmem -BINMODE=2555 +#BINGRP= kmem +#BINMODE=2555 LINKS= ${BINDIR}/w ${BINDIR}/uptime .PATH: ${.CURDIR}/../../bin/ps diff --git a/usr.bin/w/w.c b/usr.bin/w/w.c index 6441ee8..d91aa8c 100644 --- a/usr.bin/w/w.c +++ b/usr.bin/w/w.c @@ -134,7 +134,7 @@ main(argc, argv) struct stat *stp; FILE *ut; u_long l; - int ch, i, nentries, nusers, wcmd, longidle; + int ch, i, nentries, nusers, wcmd, longidle, dropgid; char *memf, *nlistf, *p, *x; char buf[MAXHOSTNAMELEN], errbuf[256]; @@ -149,7 +149,8 @@ main(argc, argv) p = "dhiflM:N:nsuw"; } - memf = nlistf = NULL; + dropgid = 0; + memf = nlistf = _PATH_DEVNULL; while ((ch = getopt(argc, argv, p)) != -1) switch (ch) { case 'd': @@ -164,9 +165,11 @@ main(argc, argv) case 'M': header = 0; memf = optarg; + dropgid = 1; break; case 'N': nlistf = optarg; + dropgid = 1; break; case 'n': nflag = 1; @@ -190,7 +193,7 @@ main(argc, argv) * Discard setgid privileges if not the running kernel so that bad * guys can't print interesting stuff from kernel memory. */ - if (nlistf != NULL || memf != NULL) + if (dropgid) setgid(getgid()); if ((kd = kvm_openfiles(nlistf, memf, NULL, O_RDONLY, errbuf)) == NULL) |