But the -f file is opened above your proposed unveil() addition.  So I think
you only need unveil(NULL,NULL).

While here, I see a different weird problem:

    stty -f file -f dsaf -f dsaf -f sadf -f asdf -f sadf 

You can pass lots of -f options, and stty will leak them the fd's.  I
suspect it can hit the fd limit before it hits the argv limit.  Anyways
just a strange behaviour.


Ricardo Mestre <[email protected]> wrote:

> stty(1) can't be pledged for all modes, but it can be unveiled. the only file 
> to
> be opened is on stty -f `file', so call unveil(2) afterwards to restrict all 
> fs
> access. tested with all arguments through ktrace/kdump.
> 
> ok?
> 
> Index: stty.c
> ===================================================================
> RCS file: /cvs/src/bin/stty/stty.c,v
> retrieving revision 1.21
> diff -u -p -u -r1.21 stty.c
> --- stty.c    28 Jun 2019 13:35:00 -0000      1.21
> +++ stty.c    23 Oct 2021 15:52:46 -0000
> @@ -82,6 +82,11 @@ main(int argc, char *argv[])
>  args:        argc -= optind;
>       argv += optind;
>  
> +     if (unveil("/", "") == -1)
> +             err(1, "unveil /");
> +     if (unveil(NULL, NULL) == -1)
> +             err(1, "unveil");
> +
>       if (ioctl(i.fd, TIOCGETD, &i.ldisc) == -1)
>               err(1, "TIOCGETD");
>  
> 

Reply via email to