Taken from Debian. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=187417 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=184057 http://bugs.gentoo.org/92232 --- gzip-1.3.5.orig/deflate.c +++ gzip-1.3.5/deflate.c @@ -643,7 +643,8 @@ /* Find the longest match, discarding those <= prev_length. * At this point we have always match_length < MIN_MATCH */ - if (hash_head != NIL && strstart - hash_head <= MAX_DIST) { + if (hash_head != NIL && strstart - hash_head <= MAX_DIST && + strstart <= window_size - MIN_LOOKAHEAD) { /* To simplify the code, we prevent matches with the string * of window index 0 (in particular we have to avoid a match * of the string with itself at the start of the input file). @@ -737,7 +738,8 @@ match_length = MIN_MATCH-1; if (hash_head != NIL && prev_length < max_lazy_match && - strstart - hash_head <= MAX_DIST) { + strstart - hash_head <= MAX_DIST && + strstart <= window_size - MIN_LOOKAHEAD) { /* To simplify the code, we prevent matches with the string * of window index 0 (in particular we have to avoid a match * of the string with itself at the start of the input file).