> Any thoughts about doing this? Regression tests are all OK, I'm about
> to start a ports build with it in (but I don't expect any problems).
> 
> For bzip2 the call is right at the start of main().
> 
> For xz it's a bit lower - below hardware_init(), which uses sysctls
> to find the amount of memory and number of CPUs.

that's the principle way I'm adding this.

Another tool is
        nm binary | grep ' U '

Now you see what it pulls in from libc.  Sort those by hand, seperate
out the malloc and stdio calls.  Look for unlink, chmod, chown, and
the what varations of open/fopen exist.

If the list is pretty simple, your confidence in what you are doing
will arrive early.  If the list is NOT simple, you'll work at it
longer because you aren't sure.

> Index: xz/Makefile
> ===================================================================
> RCS file: /cvs/ports/archivers/xz/Makefile,v
> retrieving revision 1.25
> diff -u -p -r1.25 Makefile
> --- xz/Makefile       31 Mar 2015 18:00:23 -0000      1.25
> +++ xz/Makefile       5 Oct 2015 09:23:15 -0000
> @@ -3,6 +3,7 @@
>  COMMENT=     LZMA compression and decompression tools
>  
>  DISTNAME=    xz-5.2.1
> +REVISION=    0
>  SHARED_LIBS= lzma                 2.1      # .7.1
>  CATEGORIES=  archivers
>  DPB_PROPERTIES=      parallel
> Index: xz/patches/patch-src_xz_main_c
> ===================================================================
> RCS file: xz/patches/patch-src_xz_main_c
> diff -N xz/patches/patch-src_xz_main_c
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ xz/patches/patch-src_xz_main_c    5 Oct 2015 09:23:15 -0000
> @@ -0,0 +1,13 @@
> +$OpenBSD$
> +--- src/xz/main.c.orig       Mon Oct  5 10:07:16 2015
> ++++ src/xz/main.c    Mon Oct  5 10:17:18 2015
> +@@ -163,6 +163,9 @@ main(int argc, char **argv)
> +     // on the command line, thus this must be done before args_parse().
> +     hardware_init();
> + 
> ++    if (tame("stdio wpath cpath fattr", NULL) == -1)
> ++            err(1, "tame");
> ++
> +     // Parse the command line arguments and get an array of filenames.
> +     // This doesn't return if something is wrong with the command line
> +     // arguments. If there are no arguments, one filename ("-") is still
> Index: bzip2/Makefile
> ===================================================================
> RCS file: /cvs/ports/archivers/bzip2/Makefile,v
> retrieving revision 1.64
> diff -u -p -r1.64 Makefile
> --- bzip2/Makefile    24 May 2014 20:51:54 -0000      1.64
> +++ bzip2/Makefile    5 Oct 2015 09:23:15 -0000
> @@ -4,7 +4,7 @@ COMMENT=      block-sorting file compressor, 
>  
>  VERSION=     1.0.6
>  DISTNAME=    bzip2-${VERSION}
> -REVISION=    1
> +REVISION=    2
>  CATEGORIES=  archivers
>  MASTER_SITES=        ${HOMEPAGE}${VERSION}/
>  SHARED_LIBS= bz2     10.4
> @@ -13,6 +13,7 @@ HOMEPAGE=   http://www.bzip.org/
>  
>  # BSD
>  PERMIT_PACKAGE_CDROM=        Yes
> +
>  WANTLIB=     c
>  
>  BZ2_CFLAGS=  -Wall -Winline -fomit-frame-pointer -fno-strength-reduce
> Index: bzip2/patches/patch-bzip2_c
> ===================================================================
> RCS file: bzip2/patches/patch-bzip2_c
> diff -N bzip2/patches/patch-bzip2_c
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ bzip2/patches/patch-bzip2_c       5 Oct 2015 09:23:15 -0000
> @@ -0,0 +1,13 @@
> +$OpenBSD$
> +--- bzip2.c.orig     Mon Oct  5 10:03:08 2015
> ++++ bzip2.c  Mon Oct  5 10:05:18 2015
> +@@ -1781,6 +1781,9 @@ IntNative main ( IntNative argc, Char *argv[] )
> +    Cell   *aa;
> +    Bool   decode;
> + 
> ++   if (tame("stdio wpath cpath fattr", NULL) == -1)
> ++      err(1, "tame");
> ++
> +    /*-- Be really really really paranoid :-) --*/
> +    if (sizeof(Int32) != 4 || sizeof(UInt32) != 4  ||
> +        sizeof(Int16) != 2 || sizeof(UInt16) != 2  ||
> 

Reply via email to