--- bzip2.c.orig Sat Sep 11 00:04:53 2010 +++ bzip2.c Thu Oct 15 01:55:25 2015 @@ -1257,6 +1257,17 @@ void compress ( Char *name ) setExit(1); return; }; + if (numFileNames == 1) { /* stdout, and only one input file */ + if (pledge("stdio", NULL) == -1) { + fprintf ( stderr, "%s: pledge\n", progName ); + exit ( 1 ); + } + } else { + if (pledge("stdio rpath", NULL) == -1) { + fprintf ( stderr, "%s: pledge\n", progName ); + exit ( 1 ); + } + } break; case SM_F2F: @@ -1434,6 +1445,17 @@ void uncompress ( Char *name ) setExit(1); return; }; + if (numFileNames == 1) { /* stdout, and only one input file */ + if (pledge("stdio", NULL) == -1) { + fprintf ( stderr, "%s: pledge\n", progName ); + exit ( 1 ); + } + } else { + if (pledge("stdio rpath", NULL) == -1) { + fprintf ( stderr, "%s: pledge\n", progName ); + exit ( 1 ); + } + } break; case SM_F2F: @@ -1781,6 +1803,11 @@ IntNative main ( IntNative argc, Char *argv[] ) Cell *aa; Bool decode; + if (pledge("stdio rpath wpath cpath fattr", NULL) == -1) { + fprintf ( stderr, "%s: pledge\n", progName ); + exit ( 1 ); + } + /*-- Be really really really paranoid :-) --*/ if (sizeof(Int32) != 4 || sizeof(UInt32) != 4 || sizeof(Int16) != 2 || sizeof(UInt16) != 2 || @@ -1958,6 +1985,10 @@ IntNative main ( IntNative argc, Char *argv[] ) if (opMode == OM_Z) { if (srcMode == SM_I2O) { + if (pledge("stdio", NULL) == -1) { /* stdin -> stdout */ + fprintf ( stderr, "%s: pledge\n", progName ); + exit ( 1 ); + } compress ( NULL ); } else { decode = True; @@ -1974,6 +2005,10 @@ IntNative main ( IntNative argc, Char *argv[] ) if (opMode == OM_UNZ) { unzFailsExist = False; if (srcMode == SM_I2O) { + if (pledge("stdio", NULL) == -1) { /* stdin -> stdout */ + fprintf ( stderr, "%s: pledge\n", progName ); + exit ( 1 ); + } uncompress ( NULL ); } else { decode = True;