Peter Vrabec at Redhat found that my patch was incomplete:
------- Additional Comments From [EMAIL PROTECTED]  2005-10-26 06:55 EST -------
Your patch did not help me. Problem still persists.

cpio: OOo_2.0.0_LinuxIntel_install.tar.gz: checksum error (0x332bf3b47, should
be 0x32bf3b47)

It's because:
copyin.c:1585 if (crc != file_hdr.c_chksum)
crc is unsigned long and file_hdr.c_chksum is truncated by your patch.

His corrected patch is attached.

The Redhat bug id for this issue is 171649.
The Debian bug id is 335580.

Jim

--- cpio-2.6/src/extern.h.checksum      2005-10-26 11:17:11.000000000 +0200
+++ cpio-2.6/src/extern.h       2005-10-26 11:15:42.000000000 +0200
@@ -66,7 +66,7 @@
 extern int archive_des;
 extern char *archive_name;
 extern char *rsh_command_option;
-extern unsigned long crc;
+extern unsigned int crc;
 extern int delayed_seek_count;
 #ifdef DEBUG_CPIO
 extern int debug_flag;
--- cpio-2.6/src/copyout.c.checksum     2005-10-26 11:17:11.000000000 +0200
+++ cpio-2.6/src/copyout.c      2005-10-26 11:20:01.000000000 +0200
@@ -311,7 +311,7 @@
               file_hdr->c_gid, file_hdr->c_nlink, file_hdr->c_mtime,
             file_hdr->c_filesize, file_hdr->c_dev_maj, file_hdr->c_dev_min,
           file_hdr->c_rdev_maj, file_hdr->c_rdev_min, file_hdr->c_namesize,
-              file_hdr->c_chksum);
+              file_hdr->c_chksum & 0xffffffff);
       tape_buffered_write (ascii_header, out_des, 110L);
 
       /* Write file name to output.  */
--- cpio-2.6/src/global.c.checksum      2005-10-26 11:17:11.000000000 +0200
+++ cpio-2.6/src/global.c       2005-10-26 11:15:29.000000000 +0200
@@ -139,7 +139,7 @@
 char *rsh_command_option = NULL;
 
 /* CRC checksum.  */
-unsigned long crc;
+unsigned int crc;
 
 /* Input and output buffers.  */
 char *input_buffer, *output_buffer;

Reply via email to