summaryrefslogtreecommitdiff
path: root/inflate.c
Commit message (Collapse)AuthorAgeFilesLines
* maint: update copyright datesJim Meyering2023-01-011-1/+1
|
* maint: SPC-indent inflate.cJim Meyering2022-12-281-8/+8
| | | | * inflate.c: Indent with spaces, not TABs.
* maint: do not include stdbool.h, stdalign.hPaul Eggert2022-12-261-1/+0
| | | | | They are not needed in C23, which Gnulib now emulates. (We no longer worry about C89, since Gnulib doesn’t.)
* maint: port to gcc -std=c99 -Wstrict-prototypesPaul Eggert2022-12-251-3/+3
| | | | | | | | | | | | | This doesn’t fix any bugs, since the code is correct as-is on all C versions. However, it pacifies gcc -std=c99 -Wstrict-prototypes, which complains about a function definition without arguments unless there’s a previous prototype with ‘(void)’. Most (but not all) of this patch merely reverts some recent changes to be more consistent when porting to C23. * dfltcc.c (is_dfltcc_enabled): * gzip.c (get_input_size_and_time): * inflate.c (inflate_stored, inflate_fixed, inflate_dynamic): * unpack.c (read_byte):
* maint: port function definitions to C23Paul Eggert2022-12-251-4/+4
| | | | | | | C23 does not allow K&R style function definitions. Use protyped definitions. However, don't bother with (void) in function definitions since C23 prefers (); so prefer () to (void) as this will work with older compilers anyway.
* gzip: detect invalid inputPaul Eggert2022-06-281-1/+6
| | | | | | | | | Problem reported by Young Mo Kang and fix from Mark Adler (Bug#56247). * inflate.c: Include stdbool.h. (fresh): New static var. * inflate.c (flush_output): Clear it. (inflate): Set it. (inflate_codes): Fail if the offset is outside a fresh input window.
* gzip: match printf format to arg typePaul Eggert2022-06-281-3/+13
| | | | | | | | | This pacifies gcc -Wformat -DDEBUG. * bits.c (send_bits): * deflate.c (check_match): * inflate.c (huft_build, inflate_codes): * trees.c (send_code, gen_codes, flush_block): Use correct printf formats for signed vs unsigned integers.
* maint: make update-copyrightJim Meyering2022-01-031-1/+1
|
* maint: update all copyright year number rangesJim Meyering2021-01-011-1/+1
| | | | | | | Run "make update-copyright" and then... * gnulib: Update to latest with copyright year adjusted. * tests/init.sh: Sync with gnulib to pick up copyright year. * bootstrap: Likewise.
* maint: update all copyright year number rangesJim Meyering2020-01-011-1/+1
| | | | | | | Run "make update-copyright" and then... * gnulib: Update to latest with copyright year adjusted. * tests/init.sh: Sync with gnulib to pick up copyright year. * bootstrap: Likewise.
* maint: update all copyright dates via "make update-copyright"Jim Meyering2019-01-011-1/+1
| | | | * gnulib: Also update submodule for its copyright updates.
* gzip: fix use of uninitialized memoryPaul Eggert2018-11-301-0/+6
| | | | | | | | Problem reported by Hanno Böck (Bug#33501). * NEWS: Mention this. * inflate.c (inflate_dynamic): Return if code is invalid. Fix by Mark Adler. * tests/hufts: Add test case for the bug.
* maint: update gnulib and copyright dates for 2018Jim Meyering2018-01-031-1/+1
| | | | | | * gnulib: Update to latest. * bootstrap: Update from gnulib. * all files: Run "make update-copyright".
* maint: update gnulib and copyright dates for 2017Jim Meyering2017-01-011-1/+1
| | | | | * gnulib: Update to latest. * all files: Run "make update-copyright".
* gzip: port to AIX 7.1 + xlc V12.1Paul Eggert2016-03-151-1/+1
| | | | | | | * inflate.c, unlzw.c, util.c: Include tailor.h after including any system include file that might in turn include signal.h for the first time, so that SIGPIPE is not #defined to 0 prematurely, which clashes with signal.h's SIGPIPE.
* maint: update copyright year, bootstrap, init.shJim Meyering2016-01-011-1/+1
| | | | | | | | | Run "make update-copyright" and then... * gzip.c: Transform the copyright notice via s/2015/2016/. * gnulib: Update to latest. * tests/init.sh: Update from gnulib. * bootstrap: Likewise.
* maint: remove dead codeJim Meyering2015-07-301-7/+1
| | | | | | | | | This package has not been compilable with -DCRYPT since commit v1.4-82-g9d1b943. Remove final vestiges. * bits.c (copy_block) [CRYPT]: Remove #ifdef'd code. * inflate.c (NEXTBYTE) [CRYPT]: Likewise. Prompted by a report from Flávio Medeiros that HEADER and T might be used uninitialized.
* maint: update copyright year ranges to include 2015; update gnulibJim Meyering2015-01-011-1/+1
|
* maint: udpate all copyright notices via "make update-copyright"Jim Meyering2014-06-071-1/+1
|
* maint: update all copyright year number rangesJim Meyering2013-01-041-1/+1
| | | | Run "make update-copyright".
* maint: update all copyright year number rangesJim Meyering2012-01-011-1/+1
| | | | Run "make update-copyright".
* maint: declare many variables to be staticJim Meyering2011-05-091-6/+6
| | | | | | | | | | * deflate.c: Likewise. * gzip.c: Likewise. * gzip.h: Likewise. * inflate.c: Likewise. * trees.c: Likewise. * unzip.c: Likewise. * util.c: Likewise.
* maint: limit scope of several functionsJim Meyering2011-05-091-29/+28
| | | | | | | * deflate.c (longest_match): Move extern declaration into #if-ASMV block. [!ASMV]: Define as static. * inflate.c: Remove unnecessary prototypes. ANSI-declify functions and declare them to be static.
* maint: remove all uses of OF((...)) prototype-hiding macroJim Meyering2011-05-091-9/+9
| | | | | | | | | | | | | | * bits.c: Remove all uses of OF. * deflate.c: Likewise. * gzip.c: Likewise. * inflate.c: Likewise. * lzw.h: Likewise. * trees.c: Likewise. * unlzh.c: Likewise. * unpack.c: Likewise. * util.c: Likewise. * gzip.h: Likewise. (OF): Remove its definition, too.
* maint: update copyright year ranges to include 2011Jim Meyering2011-01-031-1/+1
| | | | Run "make update-copyright", so "make syntax-check" works in 2011.
* gzip: don't assume C99, and don't assume overlapping memcpy should workPaul R. Eggert2010-07-191-4/+3
| | | | | | | * tailor.h (NOMEMCPY): Remove. memcpy is entitled to not work on overlapping blocks. * inflate.c (inflate_codes): Don't put decl after statement. Omit NOMEMCPY.
* global: convert indentation-TABs to spacesJim Meyering2010-02-031-11/+11
| | | | | | | | | | | Transformed via this shell code: t=$'\t' git ls-files \ | grep -vE '(^|/)((GNU)?[Mm]akefile|ChangeLog)|\.(am|mk)$' \ | grep -vE 'tests/pr/|help2man' \ | xargs grep -lE "^ *$t" \ | xargs perl -MText::Tabs -ni -le \ '$m=/^( *\t[ \t]*)(.*)/; print $m ? expand($1) . $2 : $_'
* gzip -d: use memcpy more oftenYuxi Zhang2010-01-111-1/+2
| | | | | * inflate.c (inflate_codes): Use memcpy (rather than slower memcopy-like code) in more cases.
* gzip -d would fail with a CRC error...Jim Meyering2010-01-111-1/+1
| | | | | | | | | | | | | | | | ...for some inputs, and some memcpy implementations. It is possible that an offending input has to be compressed "from FAT filesystem (MS-DOS, OS/2, NT)", since the sole reproducer no longer evokes a CRC error when uncompressed and recompressed on a GNU/Linux system. Also, using an unpatched reverse-memcpy-gzip on over 100,000 inputs on a GNU/Linux system did not turn up another reproducer. * inflate.c (inflate_codes): Don't call memcpy with overlapping regions. Properly detect when source and destination overlap. * tests/memcpy-abuse: New test, to trigger misbehavior. * Makefile.am (TESTS): Add it. * NEWS (Bug fixes): Mention it. Reported by Alain Magloire in http://thread.gmane.org/gmane.comp.gnu.gzip.bugs/307
* maint: update all FSF copyright year lists to include 2010Jim Meyering2010-01-011-1/+2
| | | | | | Use this command: git ls-files |grep -vE '^(\..*|COPYING|gnulib)$' |xargs \ env UPDATE_COPYRIGHT_USE_INTERVALS=1 build-aux/update-copyright
* maint: remove lots of obsolete #if...HAVE_* checksJim Meyering2009-12-301-3/+1
| | | | | | | | | | | | Remove many always-true cpp tests like #ifdef HAVE_UNISTD_H, #ifdef HAVE_FCNTL_H and #ifdef SSIZE_MAX. * gzip.c: As above. * gzip.h: Likewise. * inflate.c: Likewise. * tailor.h: Likewise. * unlzw.c: Likewise. * util.c: Likewise. * zip.c: Likewise.
* maint: update existing copyright year lists to include 2009Jim Meyering2009-09-261-2/+1
| | | | * bootstrap.conf (gnulib_modules): Add update-copyright.
* maint: remove RCS $Id$ variables and commentsJim Meyering2009-09-261-4/+0
|
* maint: remove useless casts to avoid "make syntax-check" failuresJim Meyering2009-09-261-1/+1
| | | | | | | * gzip.c (do_exit): Remove anachronistic cast. * inflate.c (huft_free): Likewise. * util.c (add_envopt): Likewise. * vms/vms.c (vms_expand_args): Likewise.
* inflate: avoid a leak on a error pathJim Meyering2009-08-181-7/+8
| | | | * inflate.c (inflate_dynamic): Don't leak
* avoid creating an undersized buffer for the hufts tableThiemo Nagel2009-08-181-2/+4
| | | | | | | A malformed input file can cause gzip to crash with a segmentation violation or hang in an endless loop. Reported in <http://bugs.debian.org/507263>. * NEWS (Bug fixes): Mention it.
* Update to GPLv3.Paul Eggert2007-07-031-1/+1
|
* * inflate.c (huft_build): Fix regression that caused gzip toPaul Eggert2006-12-201-3/+10
| | | | | | | refuse to uncompress null input (all zero length codes). Problem reported by Yiorgos Adamopoulos. This regression was caused by the security patch installed 2006-11-20, which in turn came from Debian, which in turn apparently came from Thomas Biege of SuSe.
* * inflate.c (inflate_dynamic, inflate): Don't send output toPaul Eggert2006-11-271-5/+3
| | | | | stderr unless DEBUG is defined and 'verbose'. Problem reported by Santiago Vila.
* * NEWS, configure.ac (AC_INIT):Paul Eggert2006-11-201-12/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Version 1.3.6 released. * NEWS: Describe 1.3.6's changes. * NEWS, README, README-alpha, TODO: Change from GPL to FDL. * .cvsignore, README-cvs, bootstrap, bootstrap.conf: New files. * doc/Makefile.am, lib/Makefile.am: New files. * THANKS: Change own email address to cs.ucla.edu. Add Sverre Jarp. * TODO: Add new tasks to remove porting cruft and all those buggy scripts. * configure.ac: Renamed from configure.in. (AC_PREREQ): Bump to 2.60. (AC_INIT): Bump version to 1.3.6. (AC_CONFIG_AUX_DIR): New. (AC_CONFIG_HEADERS): Move config.h to lib. Input is now lib/config.hin. (AM_INIT_AUTOMAKE): Add gnits, dist-shar. (AC_PROG_CC_STDC): New, replacing AC_PROG_CC. (AM_PROG_CC_C_O, AC_PROG_RANLIB): New. (AC_AIX, AC_GNU_SOURCE, AC_MINIX): Remove; gnulib does them now. (gl_EARLY, gl_INIT): New. match.c was moved to lib/match.c. (AC_CHECK_HEADERS_ONCE): Replace AC_CHECK_HEADERS. Don't check for sys/utime.h or utime.h. (AC_CHECK_FUNCS_ONCE): Replace AC_CHECK_FUNCS. Check for fchmod and fchown, not utime. (AC_REPLACE_FUNCS): Remove; rpmatch is now done by gnulib. (AC_CONFIG_FILES): Add doc/Makefile, lib/Makefile. * bits.c: Use the more-usual form for copyright notices in source code. * deflate.c: Likewise. * gzip.c: Likewise. * gzip.h: Likewise. * inflate.c: Likewise. * lzw.h: Likewise. * revision.h: Likewise. * tailor.h: Likewise. * trees.c: Likewise. * unpack.c: Likewise. * unzip.c: Likewise. * util.c: Likewise. * crypt.c (dummy): Add decl so that pedantic compilers won't complain about an empty file. * gzip.c (license_msg): Use more-modern wording. Include fcntl-safer.h, openat.h, stat-macros.h, stat-time.h. Simply include <dirent.h> if !NO_DIR, removing a rats-nest of #ifdefs. Simply include <utimens.h> if !defined NO_UTIME, removing a another rats-nest of #ifdefs. (DIR_OPT, TIME_OPT): Remove. (_D_EXACT_NAMLEN): Renamed from NAMLEN. All uses changed. (S_ISDIR, S_ISREG, O_BINARY, O_CREAT, O_EXCL, S_IRUSR, S_IWUSR): Remove; gnulib now does this. (RETSIGTYPE): Remove; Autoconf does this. (program_name): Renamed from progname, for compatibility with gnulib. All uses changed. (time_stamp): Now struct timespec, not time_t. All uses changd. (remove_oftime): Now volatile. (reset_times): Remove; now done by futimens. (usage): Remove. (try_help): New function. (help, license): Don't output date as part of version. A version number suffices. (help): Redo help message to match style of coreutils etc. (version): Don't bother printing compile-time configuration info like STDC_HEADERS. (main): Don't assume strlen (argv[0]) < INT_MAX (!). On usage errors, suggest --help without outputting all the help. (main, do_list): Remove unnecessary casts. (treat_stdin, treat_file, get_method, copy_stat): Support sub-second time stamp resolution. (treat_file, copy_istat): Close some race conditions if files are renamed as we read or write them. (treat_file): Do not attempt to reset the access times of directories that we read. (open_and_stat, open_input_file): New functions. (do_stat, get_istat): Remove; most of the contents went to these new functions. (make_ofname): Don't use WARN, as it affects exit status. (get_method): When the original file name was truncated, restore from its base name, not from its full name. (do_list): Avoid undefined behavior with out-of-range time stamps. ctime, for example, cannot be invoked on arbitrary time stamps safely, since it might overrun an internal buffer. Do not assume that localtime succeeds. (copy_stat): Do not remove input file; that's now the caller's responsibility. This avoids a problem if there is a write error when the caller closes the output file. (treat_dir): New arg FD, to avoid a race condition. All uses changed. (remove_output_file): New function. (abort_gzip): Use it. (abort_gzip_signal): New function, which is async-signal-safe. Exit with the signal that we got. * gzip.h (program_name, time_stamp, abort_gzip): Adjust decls to match gzip.c changes. * inflate.c (huft_build): Return 2 if null input. * tailor.h (HAVE_UTIME): Do not define; gnulib does this now. (OPEN): Use open_safer, not plain open. * unlzh.c (NPT): Set to 1<<TBIT, not to the maximum of NT and NP. (make_table): Report an error if 1<<tablebits < nextcode. (read_pt_len): Report an error if 16 < c. * unpack.c (read_tree): Report an error if the tree has too many leaves while reading it. Fix off-by-one error in final check. * util.c: Include <xalloc.h>, for xalloc_die decl. (gzip_base_name): Renamed from base_name, so we don't collide with gnulib. All uses changed. (add_envopt): Use xstrdup instead of xmalloc+strcpy. Use xcalloc rather than calloc + check. (gzip_error): Renamed from error, so we don't collide with gnulib. All uses changed. (xalloc_die): New function. (xmalloc): Remove; no longer needed. * zip.c (zip): Watch for time stamp overflow; the old code mishandled negative time stamps. * gzexe.in: Add support for --help, --version, --. Don't call basename or sed if we can avoid it. * zdiff.in: Likewise. * zforce.in: Likewise. * zgrep.in: Likewise. * zless.in: Likewise. * zmore.in: Likewise. * znew.in: Likewise. * zdiff.in: Protect against file names beginning with "-". * zmore.in: Likewise. * zgrep.in: Use printf rather than echo, to avoid problems with leading "-" and backslash. Return status of subsidiary grep. * zless.in: Add copyright notice. * zless.1: We now pass "--" to LESSOPEN. (BUGS): Mention that input file arguments are required. Add copyright notice. * COPYING: Update to current version. * Makefile.am (SUBDIRS): New macro. (AUTOMAKE_OPTIONS): Remove; now done in configure.ac. (M4DIR, ACINCLUDE_INPUTS): Remove. (EXTRA_DIST): Remove getopt.h. (gzip_SOURCES): Remove getopt.c, getopt1.c, yesno.c. (gzip_LDADD): Change from @LIBOBJS@ to lib/libgzip.a. (AM_MAKEINFOFLAGS, info_TEXINFOS, gzip_TEXINFOS, ASCPP, LN_S): (match.$(OBJEXT)): Move to subdirectory makefiles. (.in): Substitute @VERSION@, too. (check-local): New rule. (MOSTLYCLEANFILES): Add _match.S. * doc/gzip.texi: Renamed from gzip.texi. Change to GNU FDL without invariant sections or cover texts. Don't put version number or date into sample gzip -h output. * lib/match.c: Renamed from match.c. Add ia64 version written by Sverre Jarp (HP Labs). * INSTALL: Remove from CVS; now created automatically by the bootstrap script. * Makefile.in: Likewise. * aclocal.m4: Likewise. * config.h.in: Likewise. * configure: Likewise. * depcomp: Likewise. * fdl.texi: Likewise. * getopt.c: Likewise. * getopt.h: Likewise. * getopt1.c: Likewise. * gzip.doc: Likewise. * gzip.info: Likewise. * install-sh: Likewise. * mdate-sh: Likewise. * missing: Likewise. * mkinstalldirs: Likewise. * rpmatch.c: Likewise. * stamp-vti: Likewise. * texinfo.tex: Likewise. * version.texi: Likewise. * yesno.c: Likewise.
* gzip 1.3.5Paul Eggert2002-09-251-12/+41
|
* gzip 1.2.4Jean-loup Gailly1993-08-131-0/+954