From a4b58d62b59d95152ebe76f34f43bc110387b193 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20B=C3=BCnzli?= Date: Wed, 25 Sep 2013 15:31:24 +0200 Subject: clip flate stream on data check error instead of rejecting it wholesale This is required e.g. for 1798_-_zlib_incorrect_data_check.pdf . --- source/fitz/filter-flate.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'source/fitz/filter-flate.c') diff --git a/source/fitz/filter-flate.c b/source/fitz/filter-flate.c index 73451d59..f2abaf6d 100644 --- a/source/fitz/filter-flate.c +++ b/source/fitz/filter-flate.c @@ -57,6 +57,12 @@ read_flated(fz_stream *stm, unsigned char *outbuf, int outlen) fz_warn(stm->ctx, "ignoring zlib error: %s", zp->msg); return outlen - zp->avail_out; } + else if (code == Z_DATA_ERROR && !strcmp(zp->msg, "incorrect data check")) + { + fz_warn(stm->ctx, "ignoring zlib error: %s", zp->msg); + chain->rp = chain->wp; + return outlen - zp->avail_out; + } else if (code != Z_OK) { fz_throw(stm->ctx, FZ_ERROR_GENERIC, "zlib error: %s", zp->msg); -- cgit v1.2.3