patches for easier mirroring, to eliminate a special copy, to make www.freebsd.org/security a full copy of security.freebsd.org and be eventually be the same. For now files are just sitting there. The symlinks are missing. Discussed on: www (repository location) Discussed with: simon (so)
		
			
				
	
	
		
			411 lines
		
	
	
	
		
			14 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			411 lines
		
	
	
	
		
			14 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| Index: contrib/bzip2/bzip2.c
 | |
| ===================================================================
 | |
| RCS file: /home/ncvs/src/contrib/bzip2/bzip2.c,v
 | |
| retrieving revision 1.1.1.2
 | |
| diff -u -d -r1.1.1.2 bzip2.c
 | |
| --- contrib/bzip2/bzip2.c	1 Feb 2002 16:26:13 -0000	1.1.1.2
 | |
| +++ contrib/bzip2/bzip2.c	21 Jun 2005 21:43:21 -0000
 | |
| @@ -312,6 +312,7 @@
 | |
|  
 | |
|  static void    copyFileName ( Char*, Char* );
 | |
|  static void*   myMalloc     ( Int32 );
 | |
| +static int     applySavedFileAttrToOutputFile ( int fd );
 | |
|  
 | |
|  
 | |
|  
 | |
| @@ -457,6 +458,10 @@
 | |
|     ret = fflush ( zStream );
 | |
|     if (ret == EOF) goto errhandler_io;
 | |
|     if (zStream != stdout) {
 | |
| +      int fd = fileno ( zStream );
 | |
| +      if (fd < 0) goto errhandler_io;
 | |
| +      ret = applySavedFileAttrToOutputFile ( fd );
 | |
| +      if (ret != 0) goto errhandler_io;
 | |
|        ret = fclose ( zStream );
 | |
|        outputHandleJustInCase = NULL;
 | |
|        if (ret == EOF) goto errhandler_io;
 | |
| @@ -525,6 +530,7 @@
 | |
|     UChar   obuf[5000];
 | |
|     UChar   unused[BZ_MAX_UNUSED];
 | |
|     Int32   nUnused;
 | |
| +   void*   unusedTmpV;
 | |
|     UChar*  unusedTmp;
 | |
|  
 | |
|     nUnused = 0;
 | |
| @@ -554,9 +560,10 @@
 | |
|        }
 | |
|        if (bzerr != BZ_STREAM_END) goto errhandler;
 | |
|  
 | |
| -      BZ2_bzReadGetUnused ( &bzerr, bzf, (void**)(&unusedTmp), &nUnused );
 | |
| +      BZ2_bzReadGetUnused ( &bzerr, bzf, &unusedTmpV, &nUnused );
 | |
|        if (bzerr != BZ_OK) panic ( "decompress:bzReadGetUnused" );
 | |
|  
 | |
| +      unusedTmp = (UChar*)unusedTmpV;
 | |
|        for (i = 0; i < nUnused; i++) unused[i] = unusedTmp[i];
 | |
|  
 | |
|        BZ2_bzReadClose ( &bzerr, bzf );
 | |
| @@ -567,6 +574,12 @@
 | |
|  
 | |
|     closeok:
 | |
|     if (ferror(zStream)) goto errhandler_io;
 | |
| +   if ( stream != stdout) {
 | |
| +      int fd = fileno ( stream );
 | |
| +      if (fd < 0) goto errhandler_io;
 | |
| +      ret = applySavedFileAttrToOutputFile ( fd );
 | |
| +      if (ret != 0) goto errhandler_io;
 | |
| +   }
 | |
|     ret = fclose ( zStream );
 | |
|     if (ret == EOF) goto errhandler_io;
 | |
|  
 | |
| @@ -639,6 +652,7 @@
 | |
|     UChar   obuf[5000];
 | |
|     UChar   unused[BZ_MAX_UNUSED];
 | |
|     Int32   nUnused;
 | |
| +   void*   unusedTmpV;
 | |
|     UChar*  unusedTmp;
 | |
|  
 | |
|     nUnused = 0;
 | |
| @@ -662,9 +676,10 @@
 | |
|        }
 | |
|        if (bzerr != BZ_STREAM_END) goto errhandler;
 | |
|  
 | |
| -      BZ2_bzReadGetUnused ( &bzerr, bzf, (void**)(&unusedTmp), &nUnused );
 | |
| +      BZ2_bzReadGetUnused ( &bzerr, bzf, &unusedTmpV, &nUnused );
 | |
|        if (bzerr != BZ_OK) panic ( "test:bzReadGetUnused" );
 | |
|  
 | |
| +      unusedTmp = (UChar*)unusedTmpV;
 | |
|        for (i = 0; i < nUnused; i++) unused[i] = unusedTmp[i];
 | |
|  
 | |
|        BZ2_bzReadClose ( &bzerr, bzf );
 | |
| @@ -1125,7 +1140,7 @@
 | |
|  
 | |
|  
 | |
|  static 
 | |
| -void applySavedMetaInfoToOutputFile ( Char *dstName )
 | |
| +void applySavedTimeInfoToOutputFile ( Char *dstName )
 | |
|  {
 | |
|  #  if BZ_UNIX
 | |
|     IntNative      retVal;
 | |
| @@ -1134,16 +1149,26 @@
 | |
|     uTimBuf.actime = fileMetaInfo.st_atime;
 | |
|     uTimBuf.modtime = fileMetaInfo.st_mtime;
 | |
|  
 | |
| -   retVal = chmod ( dstName, fileMetaInfo.st_mode );
 | |
| -   ERROR_IF_NOT_ZERO ( retVal );
 | |
| -
 | |
|     retVal = utime ( dstName, &uTimBuf );
 | |
|     ERROR_IF_NOT_ZERO ( retVal );
 | |
| +#  endif
 | |
| +}
 | |
|  
 | |
| -   retVal = chown ( dstName, fileMetaInfo.st_uid, fileMetaInfo.st_gid );
 | |
| +static 
 | |
| +int applySavedFileAttrToOutputFile ( int fd )
 | |
| +{
 | |
| +#  if BZ_UNIX
 | |
| +   IntNative      retVal;
 | |
| +
 | |
| +   retVal = fchmod ( fd, fileMetaInfo.st_mode );
 | |
| +   if (retVal != 0)
 | |
| +       return retVal;
 | |
| +
 | |
| +   (void) fchown ( fd, fileMetaInfo.st_uid, fileMetaInfo.st_gid );
 | |
|     /* chown() will in many cases return with EPERM, which can
 | |
|        be safely ignored.
 | |
|     */
 | |
| +   return 0;
 | |
|  #  endif
 | |
|  }
 | |
|  
 | |
| @@ -1366,7 +1391,7 @@
 | |
|  
 | |
|     /*--- If there was an I/O error, we won't get here. ---*/
 | |
|     if ( srcMode == SM_F2F ) {
 | |
| -      applySavedMetaInfoToOutputFile ( outName );
 | |
| +      applySavedTimeInfoToOutputFile ( outName );
 | |
|        deleteOutputOnInterrupt = False;
 | |
|        if ( !keepInputFiles ) {
 | |
|           IntNative retVal = remove ( inName );
 | |
| @@ -1544,7 +1569,7 @@
 | |
|     /*--- If there was an I/O error, we won't get here. ---*/
 | |
|     if ( magicNumberOK ) {
 | |
|        if ( srcMode == SM_F2F ) {
 | |
| -         applySavedMetaInfoToOutputFile ( outName );
 | |
| +         applySavedTimeInfoToOutputFile ( outName );
 | |
|           deleteOutputOnInterrupt = False;
 | |
|           if ( !keepInputFiles ) {
 | |
|              IntNative retVal = remove ( inName );
 | |
| Index: contrib/bzip2/bzlib.c
 | |
| ===================================================================
 | |
| RCS file: /home/ncvs/src/contrib/bzip2/bzlib.c,v
 | |
| retrieving revision 1.1.1.2
 | |
| diff -u -d -r1.1.1.2 bzlib.c
 | |
| --- contrib/bzip2/bzlib.c	1 Feb 2002 16:26:07 -0000	1.1.1.2
 | |
| +++ contrib/bzip2/bzlib.c	21 Jun 2005 21:43:21 -0000
 | |
| @@ -574,8 +574,11 @@
 | |
|  
 | |
|  
 | |
|  /*---------------------------------------------------*/
 | |
| +/* Return  True iff data corruption is discovered.
 | |
| +   Returns False if there is no problem.
 | |
| +*/
 | |
|  static
 | |
| -void unRLE_obuf_to_output_FAST ( DState* s )
 | |
| +Bool unRLE_obuf_to_output_FAST ( DState* s )
 | |
|  {
 | |
|     UChar k1;
 | |
|  
 | |
| @@ -584,7 +587,7 @@
 | |
|        while (True) {
 | |
|           /* try to finish existing run */
 | |
|           while (True) {
 | |
| -            if (s->strm->avail_out == 0) return;
 | |
| +            if (s->strm->avail_out == 0) return False;
 | |
|              if (s->state_out_len == 0) break;
 | |
|              *( (UChar*)(s->strm->next_out) ) = s->state_out_ch;
 | |
|              BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch );
 | |
| @@ -594,10 +597,13 @@
 | |
|              s->strm->total_out_lo32++;
 | |
|              if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++;
 | |
|           }
 | |
| -   
 | |
| +
 | |
|           /* can a new run be started? */
 | |
| -         if (s->nblock_used == s->save_nblock+1) return;
 | |
| +         if (s->nblock_used == s->save_nblock+1) return False;
 | |
|                 
 | |
| +         /* Only caused by corrupt data stream? */
 | |
| +         if (s->nblock_used > s->save_nblock+1)
 | |
| +            return True;
 | |
|     
 | |
|           s->state_out_len = 1;
 | |
|           s->state_out_ch = s->k0;
 | |
| @@ -667,6 +673,10 @@
 | |
|                 cs_avail_out--;
 | |
|              }
 | |
|           }   
 | |
| +         /* Only caused by corrupt data stream? */
 | |
| +         if (c_nblock_used > s_save_nblockPP)
 | |
| +            return True;
 | |
| +
 | |
|           /* can a new run be started? */
 | |
|           if (c_nblock_used == s_save_nblockPP) {
 | |
|              c_state_out_len = 0; goto return_notr;
 | |
| @@ -712,6 +722,7 @@
 | |
|        s->strm->avail_out    = cs_avail_out;
 | |
|        /* end save */
 | |
|     }
 | |
| +   return False;
 | |
|  }
 | |
|  
 | |
|  
 | |
| @@ -732,8 +743,11 @@
 | |
|  
 | |
|  
 | |
|  /*---------------------------------------------------*/
 | |
| +/* Return  True iff data corruption is discovered.
 | |
| +   Returns False if there is no problem.
 | |
| +*/
 | |
|  static
 | |
| -void unRLE_obuf_to_output_SMALL ( DState* s )
 | |
| +Bool unRLE_obuf_to_output_SMALL ( DState* s )
 | |
|  {
 | |
|     UChar k1;
 | |
|  
 | |
| @@ -742,7 +756,7 @@
 | |
|        while (True) {
 | |
|           /* try to finish existing run */
 | |
|           while (True) {
 | |
| -            if (s->strm->avail_out == 0) return;
 | |
| +            if (s->strm->avail_out == 0) return False;
 | |
|              if (s->state_out_len == 0) break;
 | |
|              *( (UChar*)(s->strm->next_out) ) = s->state_out_ch;
 | |
|              BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch );
 | |
| @@ -754,8 +768,11 @@
 | |
|           }
 | |
|     
 | |
|           /* can a new run be started? */
 | |
| -         if (s->nblock_used == s->save_nblock+1) return;
 | |
| -               
 | |
| +         if (s->nblock_used == s->save_nblock+1) return False;
 | |
| +
 | |
| +         /* Only caused by corrupt data stream? */
 | |
| +         if (s->nblock_used > s->save_nblock+1)
 | |
| +            return True;
 | |
|     
 | |
|           s->state_out_len = 1;
 | |
|           s->state_out_ch = s->k0;
 | |
| @@ -788,7 +805,7 @@
 | |
|        while (True) {
 | |
|           /* try to finish existing run */
 | |
|           while (True) {
 | |
| -            if (s->strm->avail_out == 0) return;
 | |
| +            if (s->strm->avail_out == 0) return False;
 | |
|              if (s->state_out_len == 0) break;
 | |
|              *( (UChar*)(s->strm->next_out) ) = s->state_out_ch;
 | |
|              BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch );
 | |
| @@ -800,7 +817,11 @@
 | |
|           }
 | |
|     
 | |
|           /* can a new run be started? */
 | |
| -         if (s->nblock_used == s->save_nblock+1) return;
 | |
| +         if (s->nblock_used == s->save_nblock+1) return False;
 | |
| +
 | |
| +         /* Only caused by corrupt data stream? */
 | |
| +         if (s->nblock_used > s->save_nblock+1)
 | |
| +            return True;
 | |
|     
 | |
|           s->state_out_len = 1;
 | |
|           s->state_out_ch = s->k0;
 | |
| @@ -830,6 +851,7 @@
 | |
|  /*---------------------------------------------------*/
 | |
|  int BZ_API(BZ2_bzDecompress) ( bz_stream *strm )
 | |
|  {
 | |
| +   Bool    corrupt;
 | |
|     DState* s;
 | |
|     if (strm == NULL) return BZ_PARAM_ERROR;
 | |
|     s = strm->state;
 | |
| @@ -840,12 +862,13 @@
 | |
|        if (s->state == BZ_X_IDLE) return BZ_SEQUENCE_ERROR;
 | |
|        if (s->state == BZ_X_OUTPUT) {
 | |
|           if (s->smallDecompress)
 | |
| -            unRLE_obuf_to_output_SMALL ( s ); else
 | |
| -            unRLE_obuf_to_output_FAST  ( s );
 | |
| +            corrupt = unRLE_obuf_to_output_SMALL ( s ); else
 | |
| +            corrupt = unRLE_obuf_to_output_FAST  ( s );
 | |
| +         if (corrupt) return BZ_DATA_ERROR;
 | |
|           if (s->nblock_used == s->save_nblock+1 && s->state_out_len == 0) {
 | |
|              BZ_FINALISE_CRC ( s->calculatedBlockCRC );
 | |
|              if (s->verbosity >= 3) 
 | |
| -               VPrintf2 ( " {0x%x, 0x%x}", s->storedBlockCRC, 
 | |
| +               VPrintf2 ( " {0x%08x, 0x%08x}", s->storedBlockCRC, 
 | |
|                            s->calculatedBlockCRC );
 | |
|              if (s->verbosity >= 2) VPrintf0 ( "]" );
 | |
|              if (s->calculatedBlockCRC != s->storedBlockCRC)
 | |
| @@ -863,7 +886,7 @@
 | |
|           Int32 r = BZ2_decompress ( s );
 | |
|           if (r == BZ_STREAM_END) {
 | |
|              if (s->verbosity >= 3)
 | |
| -               VPrintf2 ( "\n    combined CRCs: stored = 0x%x, computed = 0x%x", 
 | |
| +               VPrintf2 ( "\n    combined CRCs: stored = 0x%08x, computed = 0x%08x", 
 | |
|                            s->storedCombinedCRC, s->calculatedCombinedCRC );
 | |
|              if (s->calculatedCombinedCRC != s->storedCombinedCRC)
 | |
|                 return BZ_DATA_ERROR;
 | |
| Index: contrib/bzip2/compress.c
 | |
| ===================================================================
 | |
| RCS file: /home/ncvs/src/contrib/bzip2/compress.c,v
 | |
| retrieving revision 1.1.1.2
 | |
| diff -u -d -r1.1.1.2 compress.c
 | |
| --- contrib/bzip2/compress.c	1 Feb 2002 16:26:07 -0000	1.1.1.2
 | |
| +++ contrib/bzip2/compress.c	21 Jun 2005 21:43:21 -0000
 | |
| @@ -488,9 +488,11 @@
 | |
|        /*--
 | |
|          Recompute the tables based on the accumulated frequencies.
 | |
|        --*/
 | |
| +      /* maxLen was changed from 20 to 17 in bzip2-1.0.3.  See 
 | |
| +         comment in huffman.c for details. */
 | |
|        for (t = 0; t < nGroups; t++)
 | |
|           BZ2_hbMakeCodeLengths ( &(s->len[t][0]), &(s->rfreq[t][0]), 
 | |
| -                                 alphaSize, 20 );
 | |
| +                                 alphaSize, 17 /*20*/ );
 | |
|     }
 | |
|  
 | |
|  
 | |
| @@ -527,7 +529,7 @@
 | |
|           if (s->len[t][i] > maxLen) maxLen = s->len[t][i];
 | |
|           if (s->len[t][i] < minLen) minLen = s->len[t][i];
 | |
|        }
 | |
| -      AssertH ( !(maxLen > 20), 3004 );
 | |
| +      AssertH ( !(maxLen > 17 /*20*/ ), 3004 );
 | |
|        AssertH ( !(minLen < 1),  3005 );
 | |
|        BZ2_hbAssignCodes ( &(s->code[t][0]), &(s->len[t][0]), 
 | |
|                            minLen, maxLen, alphaSize );
 | |
| @@ -651,8 +653,8 @@
 | |
|        if (s->blockNo > 1) s->numZ = 0;
 | |
|  
 | |
|        if (s->verbosity >= 2)
 | |
| -         VPrintf4( "    block %d: crc = 0x%8x, "
 | |
| -                   "combined CRC = 0x%8x, size = %d\n",
 | |
| +         VPrintf4( "    block %d: crc = 0x%08x, "
 | |
| +                   "combined CRC = 0x%08x, size = %d\n",
 | |
|                     s->blockNo, s->blockCRC, s->combinedCRC, s->nblock );
 | |
|  
 | |
|        BZ2_blockSort ( s );
 | |
| @@ -703,7 +705,7 @@
 | |
|        bsPutUChar ( s, 0x50 ); bsPutUChar ( s, 0x90 );
 | |
|        bsPutUInt32 ( s, s->combinedCRC );
 | |
|        if (s->verbosity >= 2)
 | |
| -         VPrintf1( "    final combined CRC = 0x%x\n   ", s->combinedCRC );
 | |
| +         VPrintf1( "    final combined CRC = 0x%08x\n   ", s->combinedCRC );
 | |
|        bsFinishWrite ( s );
 | |
|     }
 | |
|  }
 | |
| Index: contrib/bzip2/decompress.c
 | |
| ===================================================================
 | |
| RCS file: /home/ncvs/src/contrib/bzip2/decompress.c,v
 | |
| retrieving revision 1.1.1.2
 | |
| diff -u -d -r1.1.1.2 decompress.c
 | |
| --- contrib/bzip2/decompress.c	1 Feb 2002 16:26:07 -0000	1.1.1.2
 | |
| +++ contrib/bzip2/decompress.c	21 Jun 2005 21:43:21 -0000
 | |
| @@ -524,17 +524,23 @@
 | |
|        if (s->origPtr < 0 || s->origPtr >= nblock)
 | |
|           RETURN(BZ_DATA_ERROR);
 | |
|  
 | |
| +      /*-- Set up cftab to facilitate generation of T^(-1) --*/
 | |
| +      s->cftab[0] = 0;
 | |
| +      for (i = 1; i <= 256; i++) s->cftab[i] = s->unzftab[i-1];
 | |
| +      for (i = 1; i <= 256; i++) s->cftab[i] += s->cftab[i-1];
 | |
| +      for (i = 0; i <= 256; i++) {
 | |
| +         if (s->cftab[i] < 0 || s->cftab[i] > nblock) {
 | |
| +            /* s->cftab[i] can legitimately be == nblock */
 | |
| +            RETURN(BZ_DATA_ERROR);
 | |
| +         }
 | |
| +      }
 | |
| +
 | |
|        s->state_out_len = 0;
 | |
|        s->state_out_ch  = 0;
 | |
|        BZ_INITIALISE_CRC ( s->calculatedBlockCRC );
 | |
|        s->state = BZ_X_OUTPUT;
 | |
|        if (s->verbosity >= 2) VPrintf0 ( "rt+rld" );
 | |
|  
 | |
| -      /*-- Set up cftab to facilitate generation of T^(-1) --*/
 | |
| -      s->cftab[0] = 0;
 | |
| -      for (i = 1; i <= 256; i++) s->cftab[i] = s->unzftab[i-1];
 | |
| -      for (i = 1; i <= 256; i++) s->cftab[i] += s->cftab[i-1];
 | |
| -
 | |
|        if (s->smallDecompress) {
 | |
|  
 | |
|           /*-- Make a copy of cftab, used in generation of T --*/
 | |
| Index: contrib/bzip2/huffman.c
 | |
| ===================================================================
 | |
| RCS file: /home/ncvs/src/contrib/bzip2/huffman.c,v
 | |
| retrieving revision 1.1.1.2
 | |
| diff -u -d -r1.1.1.2 huffman.c
 | |
| --- contrib/bzip2/huffman.c	1 Feb 2002 16:26:03 -0000	1.1.1.2
 | |
| +++ contrib/bzip2/huffman.c	21 Jun 2005 21:43:21 -0000
 | |
| @@ -162,7 +162,24 @@
 | |
|        
 | |
|        if (! tooLong) break;
 | |
|  
 | |
| -      for (i = 1; i < alphaSize; i++) {
 | |
| +      /* 17 Oct 04: keep-going condition for the following loop used
 | |
| +         to be 'i < alphaSize', which missed the last element,
 | |
| +         theoretically leading to the possibility of the compressor
 | |
| +         looping.  However, this count-scaling step is only needed if
 | |
| +         one of the generated Huffman code words is longer than
 | |
| +         maxLen, which up to and including version 1.0.2 was 20 bits,
 | |
| +         which is extremely unlikely.  In version 1.0.3 maxLen was
 | |
| +         changed to 17 bits, which has minimal effect on compression
 | |
| +         ratio, but does mean this scaling step is used from time to
 | |
| +         time, enough to verify that it works.
 | |
| +
 | |
| +         This means that bzip2-1.0.3 and later will only produce
 | |
| +         Huffman codes with a maximum length of 17 bits.  However, in
 | |
| +         order to preserve backwards compatibility with bitstreams
 | |
| +         produced by versions pre-1.0.3, the decompressor must still
 | |
| +         handle lengths of up to 20. */
 | |
| +
 | |
| +      for (i = 1; i <= alphaSize; i++) {
 | |
|           j = weight[i] >> 8;
 | |
|           j = 1 + (j / 2);
 | |
|           weight[i] = j << 8;
 |