Hi Florian,
Florian Schmaus wrote:
testing bad input...tarlz: Exiting with failure status due to previous
errors.
1108(5)
Thank you very much for reporting this.
The problem is in fact a race happening on a test archive with a format
violation put there on purpose, and only can happen when more than 2 threads
are being used.
The archive in question contains a directory with a long name requiring an
extended header, and a global header has been inserted in its own lzip
member between the extended header and the ustar header like this:
+=================+===============+==============+
| extended header | global header | ustar header |
+=================+===============+==============+
The problem happens when the thread decoding the ustar header finishes
before the thread decoding the extended header has time to realize that its
lzip member is incomplete.
I have fixed the problem by making the thread decoding the ustar header
signal the error in a way that can later be overridden by another thread.
The underlying problem is that the pax format is not really adequate for
parallel decoding, forcing tarlz to jump through a lot of hoops to achieve
it. I hope a new tar format can be designed with parallel decoding in mind.
I'll release a fixed version as soon as I test the fix and finish a couple
more things.
Best regards,
Antonio.