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 {