diff options
author | ALONSO Laurent <laurent.alonso@inria.fr> | 2021-08-18 15:44:43 +0200 |
---|---|---|
committer | ALONSO Laurent <laurent.alonso@inria.fr> | 2021-08-18 15:44:43 +0200 |
commit | da1f4b413e488bbeaf3d9e7cba1d7bcc7611beea (patch) | |
tree | 8c3d27b30cce938d3a1e1d264c5a5ef8f8a15b14 | |
parent | 26ca191664e1189789f6bb9578adc57c9fb75228 (diff) |
IWASnappyStream: allow compressed blocklength to be greater than 65535...
Change-Id: Id3622af6e0e5fd2c49bdafd712ee4afac85c26ec
-rw-r--r-- | src/lib/IWASnappyStream.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/lib/IWASnappyStream.cpp b/src/lib/IWASnappyStream.cpp index 95e4d17..cf56c15 100644 --- a/src/lib/IWASnappyStream.cpp +++ b/src/lib/IWASnappyStream.cpp @@ -150,8 +150,9 @@ RVNGInputStreamPtr_t uncompress(const RVNGInputStreamPtr_t &input) while (!input->isEnd()) { readU8(input); - const unsigned long blockLength = readU16(input); - readU8(input); + unsigned long blockLength = readU16(input); + // rare, but the blockLength can be greater than 65536, ie. I find 06 00 01 in one file + blockLength+=65536*readU8(input); if (!uncompressBlock(input, (std::min)(blockLength, getRemainingLength(input)), data)) throw CompressionException(); } |