Commit d165e295 authored by James Morris's avatar James Morris

[CRYPTO]: deflate module: workaround zlib bug.

parent 1bd0f7f4
...@@ -181,7 +181,18 @@ static int deflate_decompress(void *ctx, const u8 *src, unsigned int slen, ...@@ -181,7 +181,18 @@ static int deflate_decompress(void *ctx, const u8 *src, unsigned int slen,
stream->next_out = (u8 *)dst; stream->next_out = (u8 *)dst;
stream->avail_out = *dlen; stream->avail_out = *dlen;
ret = zlib_inflate(stream, Z_SYNC_FLUSH);
/*
* Work around a bug in zlib, which sometimes wants to taste an extra
* byte when being used in the (undocumented) raw deflate mode.
* (From USAGI).
*/
if (ret == Z_OK && !stream->avail_in && stream->avail_out) {
u8 zerostuff = 0;
stream->next_in = &zerostuff;
stream->avail_in = 1;
ret = zlib_inflate(stream, Z_FINISH); ret = zlib_inflate(stream, Z_FINISH);
}
if (ret != Z_STREAM_END) { if (ret != Z_STREAM_END) {
ret = -EINVAL; ret = -EINVAL;
goto out; goto out;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment