On Sun, Feb 6, 2011 at 7:40 PM, Denys Vlasenko <[email protected]> wrote:
> On Sunday 06 February 2011 14:22, Daniel Baluta wrote:
>> Hello,
>>
>> I'm facing a strange problem when trying to extract a  .tgz file
>> using busybox tar.
>>
>> I have tested it with the latest git version, but it also reproduces
>> with older busybox versions.
>>
>> Busybox is compiled and used as described in Quick Start section
>> from INSTALL file.
>>
>> How to reproduce:
>>
>> # create a 1M zero filled file
>> $ dd count=1 bs=1M if=/dev/zero of=F0
>> # create a tgz archive containing this file
>> $ PATH= ./busybox tar -czvf F0.tgz F0
>> # try to extract the file
>> $ PATH= ./busybox tar -xzvf F0.tgz
>> $ tar: invalid tar header checksum
>>
>> Analyze:
>>
>> The problem seems to be in libarchive/get_header_tar.c file,
>> inside get_header_tar function.
>>
>> Although, F0.tgz is a compressed tar.gz file it seems that
>> get_header_tar_function tries to interpret the first
>> 512 bytes of F0.tgz as a tar header.
>>
>> In libarchive/get_header_tar.c:191:
>>
>>  /* Check header has valid magic, "ustar" is for the proper tar,
>>         * five NULs are for the old tar format  */
>>        if (strncmp(tar.magic, "ustar", 5) != 0
>>         && (!ENABLE_FEATURE_TAR_OLDGNU_COMPATIBILITY
>>             || memcmp(tar.magic, "\0\0\0\0", 5) != 0)
>>
>> TAR_OLDGNU_COMPATIBILITY is turned on.
>>
>> My question is why, isn't F0.tgz first decompressed to F0.tar, and
>> after that extracted to F0?
>
> There was a bug where archive autodetection was switching off -z.
>
> I fixed it in git and added the fix to 1.18.3 patch pile.

Did you pushed it upstream? I haven't seen any update on  ([1])
or patches posted on the list.

I don't know exactly how busybox development goes on, can you
post a pointer to the fix?

thanks,
Daniel.

[1] git://git.busybox.net/busybox
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to