1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync Frequently Asked Questions about zlib
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncIf your question is not there, please check the zlib home page
1b33c96954667ba382fa595baf7b31290bfdd517vboxsynchttp://zlib.net/ which may have more recent information.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncThe lastest zlib FAQ is at http://zlib.net/zlib_faq.html
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync 1. Is zlib Y2K-compliant?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync Yes. zlib doesn't handle dates.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync 2. Where can I get a Windows DLL version?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync The zlib sources can be compiled without change to produce a DLL. See the
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync file win32/DLL_FAQ.txt in the zlib distribution. Pointers to the
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync precompiled DLL are found in the zlib web site at http://zlib.net/ .
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync 3. Where can I get a Visual Basic interface to zlib?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync See
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync * http://marknelson.us/1997/01/01/zlib-engine/
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync * win32/DLL_FAQ.txt in the zlib distribution
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync 4. compress() returns Z_BUF_ERROR.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync Make sure that before the call of compress(), the length of the compressed
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync buffer is equal to the available size of the compressed buffer and not
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync zero. For Visual Basic, check that this parameter is passed by reference
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync ("as any"), not by value ("as long").
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync 5. deflate() or inflate() returns Z_BUF_ERROR.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync Before making the call, make sure that avail_in and avail_out are not zero.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync When setting the parameter flush equal to Z_FINISH, also make sure that
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync avail_out is big enough to allow processing all pending input. Note that a
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync Z_BUF_ERROR is not fatal--another call to deflate() or inflate() can be
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync made with more input or output space. A Z_BUF_ERROR may in fact be
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync unavoidable depending on how the functions are used, since it is not
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync possible to tell whether or not there is more output pending when
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync strm.avail_out returns with zero. See http://zlib.net/zlib_how.html for a
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync heavily annotated example.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync 6. Where's the zlib documentation (man pages, etc.)?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync It's in zlib.h . Examples of zlib usage are in the files test/example.c
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync and test/minigzip.c, with more in examples/ .
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync 7. Why don't you use GNU autoconf or libtool or ...?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync Because we would like to keep zlib as a very small and simple package.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync zlib is rather portable and doesn't need much configuration.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync 8. I found a bug in zlib.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync Most of the time, such problems are due to an incorrect usage of zlib.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync Please try to reproduce the problem with a small program and send the
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync corresponding source to us at zlib@gzip.org . Do not send multi-megabyte
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync data files without prior agreement.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync 9. Why do I get "undefined reference to gzputc"?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync If "make test" produces something like
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync example.o(.text+0x154): undefined reference to `gzputc'
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync check that you don't have old files libz.* in /usr/lib, /usr/local/lib or
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync /usr/X11R6/lib. Remove any old versions, then do "make install".
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync10. I need a Delphi interface to zlib.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync See the contrib/delphi directory in the zlib distribution.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync11. Can zlib handle .zip archives?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync Not by itself, no. See the directory contrib/minizip in the zlib
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync distribution.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync12. Can zlib handle .Z files?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync No, sorry. You have to spawn an uncompress or gunzip subprocess, or adapt
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync the code of uncompress on your own.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync13. How can I make a Unix shared library?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync By default a shared (and a static) library is built for Unix. So:
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync make distclean
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync ./configure
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync make
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync14. How do I install a shared zlib library on Unix?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync After the above, then:
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync make install
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync However, many flavors of Unix come with a shared zlib already installed.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync Before going to the trouble of compiling a shared version of zlib and
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync trying to install it, you may want to check if it's already there! If you
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync can #include <zlib.h>, it's there. The -lz option will probably link to
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync it. You can check the version at the top of zlib.h or with the
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync ZLIB_VERSION symbol defined in zlib.h .
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync15. I have a question about OttoPDF.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync We are not the authors of OttoPDF. The real author is on the OttoPDF web
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync site: Joel Hainley, jhainley@myndkryme.com.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync16. Can zlib decode Flate data in an Adobe PDF file?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync Yes. See http://www.pdflib.com/ . To modify PDF forms, see
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync http://sourceforge.net/projects/acroformtool/ .
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync17. Why am I getting this "register_frame_info not found" error on Solaris?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync After installing zlib 1.1.4 on Solaris 2.6, running applications using zlib
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync generates an error such as:
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync ld.so.1: rpm: fatal: relocation error: file /usr/local/lib/libz.so:
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync symbol __register_frame_info: referenced symbol not found
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync The symbol __register_frame_info is not part of zlib, it is generated by
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync the C compiler (cc or gcc). You must recompile applications using zlib
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync which have this problem. This problem is specific to Solaris. See
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync http://www.sunfreeware.com for Solaris versions of zlib and applications
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync using zlib.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync18. Why does gzip give an error on a file I make with compress/deflate?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync The compress and deflate functions produce data in the zlib format, which
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync is different and incompatible with the gzip format. The gz* functions in
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync zlib on the other hand use the gzip format. Both the zlib and gzip formats
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync use the same compressed data format internally, but have different headers
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync and trailers around the compressed data.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync19. Ok, so why are there two different formats?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync The gzip format was designed to retain the directory information about a
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync single file, such as the name and last modification date. The zlib format
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync on the other hand was designed for in-memory and communication channel
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync applications, and has a much more compact header and trailer and uses a
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync faster integrity check than gzip.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync20. Well that's nice, but how do I make a gzip file in memory?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync You can request that deflate write the gzip format instead of the zlib
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync format using deflateInit2(). You can also request that inflate decode the
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync gzip format using inflateInit2(). Read zlib.h for more details.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync21. Is zlib thread-safe?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync Yes. However any library routines that zlib uses and any application-
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync provided memory allocation routines must also be thread-safe. zlib's gz*
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync functions use stdio library routines, and most of zlib's functions use the
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync library memory allocation routines by default. zlib's *Init* functions
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync allow for the application to provide custom memory allocation routines.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync Of course, you should only operate on any given zlib or gzip stream from a
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync single thread at a time.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync22. Can I use zlib in my commercial application?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync Yes. Please read the license in zlib.h.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync23. Is zlib under the GNU license?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync No. Please read the license in zlib.h.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync24. The license says that altered source versions must be "plainly marked". So
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync what exactly do I need to do to meet that requirement?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync You need to change the ZLIB_VERSION and ZLIB_VERNUM #defines in zlib.h. In
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync particular, the final version number needs to be changed to "f", and an
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync identification string should be appended to ZLIB_VERSION. Version numbers
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync x.x.x.f are reserved for modifications to zlib by others than the zlib
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync maintainers. For example, if the version of the base zlib you are altering
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync is "1.2.3.4", then in zlib.h you should change ZLIB_VERNUM to 0x123f, and
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync ZLIB_VERSION to something like "1.2.3.f-zachary-mods-v3". You can also
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync update the version strings in deflate.c and inftrees.c.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync For altered source distributions, you should also note the origin and
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync nature of the changes in zlib.h, as well as in ChangeLog and README, along
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync with the dates of the alterations. The origin should include at least your
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync name (or your company's name), and an email address to contact for help or
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync issues with the library.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync Note that distributing a compiled zlib library along with zlib.h and
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync zconf.h is also a source distribution, and so you should change
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync ZLIB_VERSION and ZLIB_VERNUM and note the origin and nature of the changes
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync in zlib.h as you would for a full source distribution.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync25. Will zlib work on a big-endian or little-endian architecture, and can I
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync exchange compressed data between them?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync Yes and yes.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync26. Will zlib work on a 64-bit machine?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync Yes. It has been tested on 64-bit machines, and has no dependence on any
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync data types being limited to 32-bits in length. If you have any
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync difficulties, please provide a complete problem report to zlib@gzip.org
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync27. Will zlib decompress data from the PKWare Data Compression Library?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync No. The PKWare DCL uses a completely different compressed data format than
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync does PKZIP and zlib. However, you can look in zlib's contrib/blast
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync directory for a possible solution to your problem.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync28. Can I access data randomly in a compressed stream?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync No, not without some preparation. If when compressing you periodically use
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync Z_FULL_FLUSH, carefully write all the pending data at those points, and
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync keep an index of those locations, then you can start decompression at those
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync points. You have to be careful to not use Z_FULL_FLUSH too often, since it
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync can significantly degrade compression. Alternatively, you can scan a
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync deflate stream once to generate an index, and then use that index for
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync random access. See examples/zran.c .
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync29. Does zlib work on MVS, OS/390, CICS, etc.?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync It has in the past, but we have not heard of any recent evidence. There
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync were working ports of zlib 1.1.4 to MVS, but those links no longer work.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync If you know of recent, successful applications of zlib on these operating
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync systems, please let us know. Thanks.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync30. Is there some simpler, easier to read version of inflate I can look at to
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync understand the deflate format?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync First off, you should read RFC 1951. Second, yes. Look in zlib's
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync contrib/puff directory.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync31. Does zlib infringe on any patents?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync As far as we know, no. In fact, that was originally the whole point behind
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync zlib. Look here for some more information:
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync http://www.gzip.org/#faq11
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync32. Can zlib work with greater than 4 GB of data?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync Yes. inflate() and deflate() will process any amount of data correctly.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync Each call of inflate() or deflate() is limited to input and output chunks
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync of the maximum value that can be stored in the compiler's "unsigned int"
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync type, but there is no limit to the number of chunks. Note however that the
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync strm.total_in and strm_total_out counters may be limited to 4 GB. These
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync counters are provided as a convenience and are not used internally by
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync inflate() or deflate(). The application can easily set up its own counters
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync updated after each call of inflate() or deflate() to count beyond 4 GB.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync compress() and uncompress() may be limited to 4 GB, since they operate in a
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync single call. gzseek() and gztell() may be limited to 4 GB depending on how
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync zlib is compiled. See the zlibCompileFlags() function in zlib.h.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync The word "may" appears several times above since there is a 4 GB limit only
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync if the compiler's "long" type is 32 bits. If the compiler's "long" type is
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync 64 bits, then the limit is 16 exabytes.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync33. Does zlib have any security vulnerabilities?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync The only one that we are aware of is potentially in gzprintf(). If zlib is
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync compiled to use sprintf() or vsprintf(), then there is no protection
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync against a buffer overflow of an 8K string space (or other value as set by
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync gzbuffer()), other than the caller of gzprintf() assuring that the output
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync will not exceed 8K. On the other hand, if zlib is compiled to use
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync snprintf() or vsnprintf(), which should normally be the case, then there is
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync no vulnerability. The ./configure script will display warnings if an
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync insecure variation of sprintf() will be used by gzprintf(). Also the
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync zlibCompileFlags() function will return information on what variant of
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync sprintf() is used by gzprintf().
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync If you don't have snprintf() or vsnprintf() and would like one, you can
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync find a portable implementation here:
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync http://www.ijs.si/software/snprintf/
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync Note that you should be using the most recent version of zlib. Versions
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync 1.1.3 and before were subject to a double-free vulnerability, and versions
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync 1.2.1 and 1.2.2 were subject to an access exception when decompressing
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync invalid compressed data.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync34. Is there a Java version of zlib?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync Probably what you want is to use zlib in Java. zlib is already included
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync as part of the Java SDK in the java.util.zip package. If you really want
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync a version of zlib written in the Java language, look on the zlib home
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync page for links: http://zlib.net/ .
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync35. I get this or that compiler or source-code scanner warning when I crank it
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync up to maximally-pedantic. Can't you guys write proper code?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync Many years ago, we gave up attempting to avoid warnings on every compiler
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync in the universe. It just got to be a waste of time, and some compilers
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync were downright silly as well as contradicted each other. So now, we simply
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync make sure that the code always works.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync36. Valgrind (or some similar memory access checker) says that deflate is
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync performing a conditional jump that depends on an uninitialized value.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync Isn't that a bug?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync No. That is intentional for performance reasons, and the output of deflate
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync is not affected. This only started showing up recently since zlib 1.2.x
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync uses malloc() by default for allocations, whereas earlier versions used
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync calloc(), which zeros out the allocated memory. Even though the code was
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync correct, versions 1.2.4 and later was changed to not stimulate these
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync checkers.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync37. Will zlib read the (insert any ancient or arcane format here) compressed
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync data format?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync Probably not. Look in the comp.compression FAQ for pointers to various
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync formats and associated software.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync38. How can I encrypt/decrypt zip files with zlib?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync zlib doesn't support encryption. The original PKZIP encryption is very
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync weak and can be broken with freely available programs. To get strong
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync encryption, use GnuPG, http://www.gnupg.org/ , which already includes zlib
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync compression. For PKZIP compatible "encryption", look at
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync http://www.info-zip.org/
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync39. What's the difference between the "gzip" and "deflate" HTTP 1.1 encodings?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync "gzip" is the gzip format, and "deflate" is the zlib format. They should
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync probably have called the second one "zlib" instead to avoid confusion with
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync the raw deflate compressed data format. While the HTTP 1.1 RFC 2616
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync correctly points to the zlib specification in RFC 1950 for the "deflate"
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync transfer encoding, there have been reports of servers and browsers that
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync incorrectly produce or expect raw deflate data per the deflate
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync specification in RFC 1951, most notably Microsoft. So even though the
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync "deflate" transfer encoding using the zlib format would be the more
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync efficient approach (and in fact exactly what the zlib format was designed
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync for), using the "gzip" transfer encoding is probably more reliable due to
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync an unfortunate choice of name on the part of the HTTP 1.1 authors.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync Bottom line: use the gzip format for HTTP 1.1 encoding.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync40. Does zlib support the new "Deflate64" format introduced by PKWare?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync No. PKWare has apparently decided to keep that format proprietary, since
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync they have not documented it as they have previous compression formats. In
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync any case, the compression improvements are so modest compared to other more
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync modern approaches, that it's not worth the effort to implement.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync41. I'm having a problem with the zip functions in zlib, can you help?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync There are no zip functions in zlib. You are probably using minizip by
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync Giles Vollant, which is found in the contrib directory of zlib. It is not
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync part of zlib. In fact none of the stuff in contrib is part of zlib. The
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync files in there are not supported by the zlib authors. You need to contact
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync the authors of the respective contribution for help.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync42. The match.asm code in contrib is under the GNU General Public License.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync Since it's part of zlib, doesn't that mean that all of zlib falls under the
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync GNU GPL?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync No. The files in contrib are not part of zlib. They were contributed by
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync other authors and are provided as a convenience to the user within the zlib
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync distribution. Each item in contrib has its own license.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync43. Is zlib subject to export controls? What is its ECCN?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync zlib is not subject to export controls, and so is classified as EAR99.
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync44. Can you please sign these lengthy legal documents and fax them back to us
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync so that we can use your software in our product?
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync No. Go away. Shoo.