Another low hanging fruit of the same sort:
$ ktrace fsck_msdofs /dev/tty
Abort trap (core dumped)
$ kdump | tail
4663 fsck_msdos RET read 612/0x264
4663 fsck_msdos CALL read(3,0x304fdfe4000,0x4000)
4663 fsck_msdos RET read 0
4663 fsck_msdos CALL open(0x3029c121880,0x2<O_RDWR>)
4663 fsck_msdos NAMI "/dev/tty"
4663 fsck_msdos RET open 4
4663 fsck_msdos CALL ioctl(4,DIOCGPDINFO,0x7f7ffffee340)
4663 fsck_msdos PLDG ioctl, "ioctl", errno 1 Operation not permitted
4663 fsck_msdos PSIG SIGABRT SIG_DFL code <1870144632>
4663 fsck_msdos NAMI "fsck_msdos.core"
Right after DIOCGPDINFO comes a pledge stdio.
Index: main.c
===================================================================
RCS file: /var/cvs/src/sbin/fsck_msdos/main.c,v
retrieving revision 1.22
diff -u -p -r1.22 main.c
--- main.c 23 Nov 2015 19:19:30 -0000 1.22
+++ main.c 28 May 2016 17:24:18 -0000
@@ -57,9 +57,6 @@ main(int argc, char *argv[])
{
int ch;
- if (pledge("stdio rpath wpath disklabel", NULL) == -1)
- err(1, "pledge");
-
while ((ch = getopt(argc, argv, "pynf")) != -1) {
switch (ch) {
case 'f':