[news.software.b] 2.11 compress bug

james@bigtex.uu.net (James Van Artsdalen) (02/06/88)

There is a bug in compress.c of the standard news release.  I am using news
2.11 patchlevel 14.

On a USG system, if zcat is asked to uncompress a file whose name is exactly
fourteen characters and whose name does not end in ".Z", zcat will silently
erase that input file under a couple of conditions.  For example, the command:

$ zcat abcdefghijklmn >out

will delete the input file if zcat is interrupted or there is an error in
writing the output.  There are a couple of other failure modes involving
similarly constructed file names, but these are normally not silent: use
the -F flag at your own risk.

The *unofficial* patch below will prevent zcat from silently removing the input
file.
-----
*** /usr/src/news/src/compress.c	Sat Dec 19 14:01:59 1987
--- compress.c	Fri Feb  5 14:44:22 1988
***************
*** 1185,1191
  writeerr()
  {
      perror ( ofname );
!     unlink ( ofname );
      exit ( 1 );
  }
  

--- 1185,1192 -----
  writeerr()
  {
      perror ( ofname );
!     if (zcat_flg == 0)
! 	unlink ( ofname );
      exit ( 1 );
  }
  
***************
*** 1254,1260
  
  onintr ( )
  {
!     unlink ( ofname );
      exit ( 1 );
  }
  

--- 1255,1262 -----
  
  onintr ( )
  {
!     if (zcat_flg == 0)
! 	unlink ( ofname );
      exit ( 1 );
  }
  
***************
*** 1262,1268
  {
      if ( do_decomp == 1 ) 
      	fprintf ( stderr, "uncompress: corrupt input\n" );
!     unlink ( ofname );
      exit ( 1 );
  }
  

--- 1264,1271 -----
  {
      if ( do_decomp == 1 ) 
      	fprintf ( stderr, "uncompress: corrupt input\n" );
!     if (zcat_flg == 0)
! 	unlink ( ofname );
      exit ( 1 );
  }
  

-- 
James R. Van Artsdalen    ...!uunet!utastro!bigtex!james     "Live Free or Die"
Work: 512-328-0282 Home: 346-2444; 110 Wild Basin Rd. Ste #230, Austin TX 78746