Zipios

Zipios Logo

Introduction

We maintain the Zipios library. This is a C++ library one can use to read or create 32 bit zip files. The advantage of this library is that it offers standard C++ streams to copy the data. The main stream gives you information about each file and you can create a sub-stream for each one of those files. The input is automatically compressed and the output automatically decompressed.

This is particularly useful to go through a zip file looking for a while and then decompress just that one file as if you were reading a regular file from disk.

The project was moved from SourceForge to github. If you are interested by the older versions, they are still available on SourceForge.

Supported Formats

We tried to support most of the expected zip formats, however, we only generate 32 bit zip files. If you need to create humungous files, this library is not yet capable of handling 64 bit files. One problem with that situation is the fact that until you reach the limit of a 32 bit zip file, it is somewhat of a waste to use 64 bit. But once you are that far in, it would be a huge drag to transform what was already written to 64 bit before moving forward.

Unfortunately, the zip file format is either all 32 or all 64 bits. There is no middle ground.

32 bit files can already hold pretty large files, though.

See correpsonding github issue.

Compression

At this time, this library is limited to zlib as the compressor/decompressor.

Dependencies

The development environment makes use of gcc/g++ and cmake.

The library requires zlib.

The tests require catch.hpp to compile. It is possible to compile everything without the tests by not turning them on. Whether catch.hpp is missing is then ignored.

To actually run the tests, you need the zip utility. It is used to create zip files and then make sure that we can decompress them with our streams.

The documentation requires doxygen. Further, if you want to get the graphs, install graphviz (recommended.)

Documentation

We have documentation which is inline. We extract that documentation using Doxygen and place it on SourceForge.net.

Binary Package

We build Snap! C++ on Launchpad so you can retrieve packages from there. At the moment we only offer Ubuntu 16.04.

https://launchpad.net/~snapcpp/+archive/ubuntu/ppa/+packages

The list includes Zipios precompiled ready to be installed on your machine. It includes the library, the development packages, and one package with full documentation.

Bug/Patches

Please head to github.com in order to offer bug reports and patches to this library.

For patches, please make sure to follow the existing syntax otherwise it is not unlikely to not get added to the trunk (which would be a shame).

CVE-2019-13453 (version 0.1.5 and older)

Zipios++ 0.1.5 and older were stricken by a DoS attack vector. This was patched by Mike Salvatore who was kind enough to take care of the CVE registration and offering us a patch. I took care of creating a new version, 0.1.7, which you want to use instead of any older version of Zipios++ version 0.1.x.

Details about how the patch came to be can be found on Mike's website:

Fun with Fuzzers: How I Discovered Three Vulnerabilities (Part 2 of 3)

Note that version 2.x was not affected.

License

The library is offered with an LGPL license.

IMPORTANT NOTE:

Versions between 2.0.0 and 2.1.x had two files, dostime.c and dostime.h, which were covered by the GPL v2. So make sure to use 2.2+ if you need an LGPL license.

 

Snap! Websites
An Open Source CMS System in C++

Contact Us Directly