Code Monkey home page Code Monkey logo

Comments (4)

Majored avatar Majored commented on August 16, 2024

You aren't doing anything wrong in your example. If I take an archive written via ZipFileWriter::write_entry_whole(), it works perfectly fine.

If you could provide the ZIP file being used, that would be very helpful.
It could just be that it's using some feature of the specification which we don't currently support, and there's not a sanity check for it.

from rs-async-zip.

BeastLe9enD avatar BeastLe9enD commented on August 16, 2024

Yes, I just tried a zip file with an uncompressed txt file to ensure that its not the compression breaking things
Here is a google drive link :)
https://drive.google.com/file/d/1XDp8qIiQn9kNKECEKeoKRHuEGnuoGcKO/view?usp=sharing

from rs-async-zip.

Majored avatar Majored commented on August 16, 2024

It seems the local file header contains differing extra field data than in the central directory. My assumption was that they'd always be in sync, but that seems to be incorrect based on this spec note:

Extra Field records that MAY contain information about a file that SHOULD
not be exposed SHOULD NOT be stored in the Local Header and SHOULD only
be written to the Central Directory where they can be encrypted. This
design currently does not support streaming.

We currently just seek directly to the data offset using the file name length & extra field length present within the central directory header. So when the two are out of sync, we seek to the wrong place and start reading garbled data.

There doesn't seem to be any way around this other than to always read the local file header as well, which is quite annoying given most of the data is redundant when you have the central directory header.

In the meantime, you could use the read::stream::ZipFileReader implementation as that uses the local file header only.

from rs-async-zip.

BeastLe9enD avatar BeastLe9enD commented on August 16, 2024

okay, thank you! Just for your information, it was a simple zip file I created with 7zip

from rs-async-zip.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.