Michael Reed(m.r...@mykolab.com) on 2016.01.01 22:29:08 -0500:
> 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

Hi,

thanks for your bug report. I think we still want pledge calls and arguments
grepable, so i would like to commit this instead:

ok?

diff --git usr.bin/fstat/fstat.c usr.bin/fstat/fstat.c
index cc51086..98c9760 100644
--- usr.bin/fstat/fstat.c
+++ usr.bin/fstat/fstat.c
@@ -276,9 +276,19 @@ main(int argc, char *argv[])
                errx(1, "%s", kvm_geterr(kd));
 
        if (fuser) {
-               if (sflg) { /* fuser might call kill(2) */
+               if (sflg && uflg) {
+                       /*
+                        * sflg (signal) calls kill(2) -> proc
+                        * uflg needs getpw
+                        */
+                       if (pledge("stdio getpw rpath proc", NULL) == -1)
+                               err(1, "pledge");
+               } else if (sflg && !uflg) {
                        if (pledge("stdio rpath proc", NULL) == -1)
                                err(1, "pledge");
+               } else if (!sflg && uflg) {
+                       if (pledge("stdio getpw rpath", NULL) == -1)
+                               err(1, "pledge");
                } else {
                        if (pledge("stdio rpath", NULL) == -1)
                                err(1, "pledge");

Reply via email to