OK? Comments?

On Sep 14 16:50:43, h...@stare.cz wrote:
> On Sep 13 17:50:12, danj+o...@chown.me wrote:
> > And can you add # uses pledge() just before WANTLIB please?
> 
> OK.
> 
> On Sep 13 20:16:57, s...@spacehopper.org wrote:
> > On 2016/09/13 13:03, Stuart Henderson wrote:
> > > 
> > > We also often defer pledge until after option parsing, when we have
> > > a better idea of what is actually needed: for toast(/untoast/tcat)
> > > this would allow a more accurate pledge because we'll then know
> > > whether or not it needs filesystem access.
> 
> See below for a finer pledge():
> 
> * initially, restrict to "stdio rpath wpath cpath fattr"
> * if we are tcat(1), restrict to "stdio rpath"
> * if we are just a filter, restrict to "stdio"
> 
> The "fattr" is for preserving mtime.
> 
> The following works with these restrictions:
> 
>  $ toast file
>  $ tcat file.gsm > file
>  $ untoast file.gsm
>  $ toast < file > file.gsm
>  $ untoast < file.gsm > file
> 
>       Jan
> 
> 
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/audio/gsm/Makefile,v
> retrieving revision 1.45
> diff -u -p -r1.45 Makefile
> --- Makefile  13 Sep 2016 11:33:28 -0000      1.45
> +++ Makefile  14 Sep 2016 14:48:53 -0000
> @@ -3,6 +3,7 @@
>  COMMENT=     GSM audio codec library and converter
>  
>  DISTNAME=    gsm-1.0.15
> +REVISION=    0
>  WRKDIST=     ${WRKDIR}/gsm-1.0-pl15
>  
>  SHARED_LIBS= gsm     1.0
> @@ -16,6 +17,7 @@ MAINTAINER= Stuart Henderson <sthen@open
>  # ISC-like
>  PERMIT_PACKAGE_CDROM=        Yes
>  
> +# uses pledge(2)
>  WANTLIB += c
>  
>  MASTER_SITES=        ${HOMEPAGE}
> Index: patches/patch-src_toast_c
> ===================================================================
> RCS file: patches/patch-src_toast_c
> diff -N patches/patch-src_toast_c
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-src_toast_c 14 Sep 2016 14:48:53 -0000
> @@ -0,0 +1,47 @@
> +$OpenBSD$
> +--- src/toast.c.orig Wed Apr 26 21:14:26 2006
> ++++ src/toast.c      Wed Sep 14 14:14:29 2016
> +@@ -129,9 +129,22 @@ static void parse_argv0 P1((av0), char * av0 )
> +      *  and decode as well.
> +      */
> + 
> +-    if (!strncmp(av0, "un", 2)) f_decode = 1;
> ++    if (pledge("stdio rpath wpath cpath fattr", NULL) == -1) {
> ++            perror("pledge");
> ++            exit(1);
> ++    }
> ++
> ++    if (!strncmp(av0, "un", 2)) {
> ++            f_decode = 1;
> ++    }
> +     if (  (l = strlen(av0)) >= 3 /* strlen("cat") */
> +-       && !strcmp( av0 + l - 3, "cat" )) f_cat = f_decode = 1;
> ++       && !strcmp( av0 + l - 3, "cat" )) {
> ++            if (pledge("stdio rpath", NULL) == -1) {
> ++                    perror("pledge");
> ++                    exit(1);
> ++            }
> ++            f_cat = f_decode = 1;
> ++    }
> + }
> + 
> + 
> +@@ -793,8 +806,16 @@ int main P2((ac, av), int ac, char **av)
> + 
> +     catch_signals(onintr);
> + 
> +-    if (ac <= 0) process( (char *)0 );
> +-    else while (ac--) process( *av++ );
> ++    if (ac <= 0) {
> ++            if (pledge("stdio", NULL) == -1) {
> ++                    perror("pledge");
> ++                    exit(1);
> ++            }
> ++            process( (char *)0 );
> ++    } else {
> ++            while (ac--)
> ++                    process( *av++ );
> ++    }
> + 
> +     exit(0);
> + }

Reply via email to