unzip headersize bug fixed
Denys Vlasenko
vda.linux at googlemail.com
Wed Nov 7 08:20:57 PST 2007
On Tuesday 06 November 2007 19:30, Paul Fox wrote:
> 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 is there:
http://busybox.net/downloads/fixes-1.8.0/busybox-1.8.0-unzip.patch
> 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.
Well, I expected that PACKED there will let gcc know that entire union
should be packed too. There should be a way to suppress that extra
two bytes on ARM, right? Maybe PACKED will even work on ARM,
I didn't check, but on i386 gcc complains.
--
vda
More information about the busybox
mailing list