Hi,
`fuser -u -c /' doesn't seem to work for me:
fuser(28663): syscall 33 "getpw"
The patch below fixes my issue. The pledge condition was already a bit
long, so I just switched to snprintf(3); not sure what's normally done
in such situations.
Regards,
Michael
Index: fstat.c
===================================================================
RCS file: /cvs/src/usr.bin/fstat/fstat.c,v
retrieving revision 1.85
diff -u -p -r1.85 fstat.c
--- fstat.c 30 Dec 2015 19:02:12 -0000 1.85
+++ fstat.c 2 Jan 2016 03:18:17 -0000
@@ -142,6 +142,7 @@ main(int argc, char *argv[])
int arg, ch, what;
char *memf, *nlistf, *optstr;
char buf[_POSIX2_LINE_MAX];
+ char promises[1024];
const char *errstr;
int cnt, flags;
@@ -275,18 +276,12 @@ main(int argc, char *argv[])
if ((kf = kvm_getfiles(kd, what, arg, sizeof(*kf), &cnt)) == NULL)
errx(1, "%s", kvm_geterr(kd));
- if (fuser) {
- if (sflg) { /* fuser might call kill(2) */
- if (pledge("stdio rpath proc", NULL) == -1)
- err(1, "pledge");
- } else {
- if (pledge("stdio rpath", NULL) == -1)
- err(1, "pledge");
- }
- } else {
- if (pledge("stdio rpath getpw", NULL) == -1)
- err(1, "pledge");
- }
+ snprintf(promises, sizeof(promises), "stdio rpath%s%s",
+ (fuser && sflg) ? " proc" : "", /* fuser might call kill(2) */
+ (!fuser || uflg) ? " getpw" : "");
+
+ if (pledge(promises, NULL) == -1)
+ err(1, "pledge");
find_splices(kf, cnt);
if (!fuser)