64 bit system checksum bug still not fixed?

View: New views
4 Messages — Rating Filter:   Alert me  

64 bit system checksum bug still not fixed?

by David G. Pickett-2 :: Rate this Message:

| View Threaded | Show Only this Message

I went to use Gnu cpio 2.11 on the very latest Ubuntu with my favorite options to duplicate a tree, and got a shock:

$ ( cd .src/ic6_int
     find | grep -Ev '\.svn([-/]|$)' | gcpio -oaH crc
   )|(
     mkdir .src/ic6_int-clean
     .src/ic6_int-clean
     rm -rf * .??*
     gcpio -idmH crc
)
gcpio: eti_3rdparty/tarfiles/qpid-0.8.tar.gz: checksum error (0x1c9ebca74, should be 0xc9ebca74)
gcpio: doc/Doc_Convert/xxe-pro-5_1_1-setup.exe: checksum error (0x170b19461, should be 0x70b19461)
1674013 blocks
1674013 blocks

Googling around, I found the 2005 bug fix where the checksum is trimmed to 32 bits with '& 0xffffffff':

http://lists.gnu.org/archive/html/bug-cpio/2005-10/msg00013.html

So, I changed 2.11 files in a somewhat similar fashion, and it no longer complains.  Maybe the middle bit is the winner.

1. What happened to the fix these 7 years?

2. Is this a proper (portable) fix?

extern unsigned int crc;
".src/cpio-2.11/src/extern.h" line 78 of 219 --35%-- col 17


  return crc & 0xffffffff ;
".src/cpio-2.11/src/copyout.c" line 62 of 898 --6%-- col 10


unsigned int crc;
".src/cpio-2.11/src/global.c" line 147 of 195 --75%-- col 10

cpio 64 bit system checksum bug

by David G. Pickett-2 :: Rate this Message:

| View Threaded | Show Only this Message

Does one have to subscribe to have email accepted?

====================
I went to use Gnu cpio 2.11 on the very latest Ubuntu with my favorite options to duplicate a tree, and got a shock:

$ ( cd .src/ic6_int
     find | grep -Ev '\.svn([-/]|$)' | gcpio -oaH crc
   )|(
     mkdir .src/ic6_int-clean
     .src/ic6_int-clean
     rm -rf * .??*
     gcpio -idmH crc
)
gcpio: eti_3rdparty/tarfiles/qpid-0.8.tar.gz: checksum error (0x1c9ebca74, should be 0xc9ebca74)
gcpio: doc/Doc_Convert/xxe-pro-5_1_1-setup.exe: checksum error (0x170b19461, should be 0x70b19461)
1674013 blocks
1674013 blocks

Googling around, I found the 2005 bug fix where the checksum is trimmed to 32 bits with '& 0xffffffff':

http://lists.gnu.org/archive/html/bug-cpio/2005-10/msg00013.html

So, I changed 2.11 files in a somewhat similar fashion, and it no longer complains.  Maybe the middle bit is the winner.

1. What happened to the fix these 7 years?

2. Is this a proper (portable) fix?

extern unsigned int crc;
".src/cpio-2.11/src/extern.h" line 78 of 219 --35%-- col 17


  return crc & 0xffffffff ;
".src/cpio-2.11/src/copyout.c" line 62 of 898 --6%-- col 10


unsigned int crc;
".src/cpio-2.11/src/global.c" line 147 of 195 --75%-- col 10


Re: cpio 64 bit system checksum bug

by Mike Frysinger :: Rate this Message:

| View Threaded | Show Only this Message

On Friday 17 February 2012 16:49:23 David G. Pickett wrote:
> Does one have to subscribe to have email accepted?

i got your e-mail via the list
-mike


signature.asc (853 bytes) Download Attachment

Re: 64 bit system checksum bug still not fixed?

by Sergey Poznyakoff-2 :: Rate this Message:

| View Threaded | Show Only this Message

Hi David,

Apologies for not being able to reply earlier.

>    1. What happened to the fix these 7 years?

Looks like I have applied the wrong fix.

>    2. Is this a proper (portable) fix?

Yes, it is perfectly portable.  I'm going to apply it to the
current sources.  Thanks for drawing my attention to it!

Regards,
Sergey