uudecode and b64decode might need "getpw" if -s or -o is given. The reason is the getpwnam(3) call on uudecode.c:238 that is reached if 'sflag == 1' and the `remote file name' triggers `tilde expansion':
$ cat boom begin 644 ~/boom %8F]O;0H` ` end $ uudecode -s boom Abort trap (core dump) $ uudecode -o boom.out boom Abort trap (core dump) Note that 'oflag == 1' implies 'sflag == 1', so we need only test for the latter. Index: uudecode.c =================================================================== RCS file: /var/cvs/src/usr.bin/uudecode/uudecode.c,v retrieving revision 1.22 diff -u -p -r1.22 uudecode.c --- uudecode.c 9 Oct 2015 01:37:09 -0000 1.22 +++ uudecode.c 3 Jan 2016 05:16:13 -0000 @@ -126,7 +126,10 @@ main(int argc, char *argv[]) argc -= optind; argv += optind; - if (oflag || pflag == 0) { + if (sflag) { + if (pledge("stdio rpath wpath cpath getpw", NULL) == -1) + err(1, "pledge"); + } else if (pflag == 0) { if (pledge("stdio rpath wpath cpath", NULL) == -1) err(1, "pledge"); } else {