Comments (10)
Looks like I need to add support for the tar PAX extension. I at least pushed a fix the crash, but until I add the PAX extension support, the PAX headers will get treated as files so you'll have extra files that get extracted out (in directories called PaxHeader). These are similar to the meta files Mac's use. I'll add the proper PAX extension support shortly.
from archive.
I pushed a fix to handle the PAX header files that are part of the POSIX extension. I still need to handle parsing them to extract the extra metadata, but the only thing it really means is the group and user id for files may not be correct, or some other more extreme cases that would not occur in pub archives, like files exceeding 8GB or extremely long file names. I will continue working on trying to conform to the full spec, but I suspect as it is now is sufficient for the archives in pub.
from archive.
tarurls.txt
I've uploaded a few URLs of .tar.gz files that I had some issues with. I think half of them were parse issues, the other half was parsing OK but the README contained a weird UTF-8. So best case you should be able to parse all of them, worst case roughly half of them.
(And ignore that I have UTF-8 issues, I think it is unrelated to your lib)
from archive.
from archive.
I noticed 7zip doesn't handle the paxHeaders either and is writing them out as files. The POSIX standard does say this is the proper thing to do if the PAX metadata files aren't explicitly handled, but this seems wrong to me as it adds extra files that wouldn't otherwise exist. I will continue to have the archive library not write those paxHeader files out, and since I'm using 7zip to validate the extracted archives, I'll have my tests ignore those paxHeader files from the 7zip extractions.
from archive.
I ran a file-by-file, byte-by-byte comparison test for every archive in the tarurls.txt list, extracting them with 7zip and the dart library. Every archive passed the test. The test is in test/pub_test.dart.
The pushed version has the 7zip and file comparison functions disabled since the Travis CI system won't have 7zip available. I can change it to use the Linux tar program for doing the CI unit test, if necessary.
from archive.
Thanks @brendan-duncan! If you feel confident about it, please publish the new version, I'll run it through the staging db of pub.
from archive.
from archive.
All right, I switched to the stable branch and published the fixes as 1.0.29.
from archive.
I've validated the pub staging, and this issue is fixed with 1.0.29.
from archive.
Related Issues (20)
- Archive is vulnerable to symlink path traversal HOT 2
- Archive package is vulnerable to zip filename spoofing HOT 2
- Unhandled Exception: FormatException: Could not find End of Central Directory Record HOT 2
- ZLib feature: dictionary
- [Feature] Encoding and decoding of ZIP64 archives (e.g. handling archives of 4GB or more) HOT 20
- Compatibility with Java Deflater HOT 1
- JPG lost GPS Info after encoder HOT 1
- Do not store full path in tar HOT 1
- Package flagged as vulnerable HOT 16
- DO NOT USE THIS PACKAGE FOR ZIPPING LARGE FILES! HOT 13
- Version 3.3.8 corrupts symlinked files when extracting HOT 5
- Version 3.3.8 Made Sqlite Database Corrupts After Extract HOT 2
- Corrupted files extracted from PPMd ZIP archive HOT 9
- BZip2 decompressed file is corrupted HOT 1
- i can't unzip this file HOT 2
- InputFileStream bufferSize is always 8 bytes HOT 5
- .tar.gz encode error HOT 2
- Out of memory exception HOT 19
- zipDirectory in ZipFileEncoder doesn't pass onProgress to addDirectory
- zipDirectory method returns before archiving is complete HOT 11
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from archive.