X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/halibut/blobdiff_plain/f4944c7cf92f243fd5c48361c6012e84f71fb545..8f664e7e91c918cd13248f6b684580c4dd2cdb31:/deflate.c diff --git a/deflate.c b/deflate.c index ecae0d0..a04f86d 100644 --- a/deflate.c +++ b/deflate.c @@ -2441,8 +2441,12 @@ int deflate_decompress_data(deflate_decompress_ctx *dctx, */ if (dctx->nbits < 16) goto finished; - nlen = dctx->bits & 0xFFFF; + nlen = 0xFFFF & ~dctx->bits; EATBITS(16); + if (dctx->uncomplen != (nlen ^ 0xFFFF)) { + error = DEFLATE_ERR_UNCOMP_HDR; + goto finished; + } if (dctx->uncomplen == 0) dctx->state = OUTSIDEBLK; /* block is empty */ else