unzip headersize bug fixed

Paul Fox pgf at brightstareng.com
Tue Nov 6 19:30:16 UTC 2007


hi --

i commited a fix for unzip yesterday, and it occurs to me that i
should probably mention it, since it's probably a candidate for
1.8.1.  (the svn rev is r20369.)

it turs out that at least some gcc versions (our is 3.4.1 for
arm) don't fully pack structures properly -- in the case of the
zip header, the elements of the structure are packed, but the end
of the struct is padded from 26 out to 28 bytes.  unzip was
changed recently to do two things:  a) verify that the structure
is exactly 26 bytes, and b) use sizeof(zip_header) when reading
the header.  i fixed unzip.c to a) change the size check so that
a struct that is only too long will pass the test, and b) changed
the read back to using a constant value of 26.

vda -- regarding your svn 20370/20372 -- are you sure that that warning
about ATTRIBUTE_PACKED is spurious?  does ATTRIBUTE_PACKED make
sense on a union?  i tried the same thing and backed it out
because of the warning.  (also -- i don't deserve credit for the
telnetd zombie fix.  someone else, i believe.)

paul
=---------------------
 paul fox, pgf at brightstareng.com



More information about the busybox mailing list