elfdump: limit STDIN to no rights rather than closing it

Closing stdin/stdout/stderr is often a bad idea as a future open()
can end up with its fd. Leave it open and limit it to no rights
instead.

Reviewed by:	cem
Differential Revision:	https://reviews.freebsd.org/D7984
This commit is contained in:
Ed Maste 2016-09-20 21:38:12 +00:00
parent 85190f81bb
commit 9e8f606352
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=306056

View File

@ -573,7 +573,7 @@ main(int ac, char **av)
cap_rights_init(&rights, CAP_MMAP_R);
if (cap_rights_limit(fd, &rights) < 0 && errno != ENOSYS)
err(1, "unable to limit rights for %s", *av);
close(STDIN_FILENO);
cap_rights_limit(STDIN_FILENO, cap_rights_init(&rights));
cap_rights_init(&rights, CAP_FSTAT, CAP_IOCTL, CAP_WRITE);
cmd = TIOCGETA; /* required by isatty(3) in printf(3) */
if ((cap_rights_limit(STDOUT_FILENO, &rights) < 0 && errno != ENOSYS) ||