diff --git a/source/marathon/defl.rs b/source/marathon/defl.rs index 72b9404..23f60d2 100644 --- a/source/marathon/defl.rs +++ b/source/marathon/defl.rs @@ -18,10 +18,18 @@ pub fn load_zlib_header(b: &[u8]) -> ResultS } let cm = cmf & CM; - let cinfo = cmf & CINFO >> 4; + let cinfo = cmf & CINFO; - if cm != 8 || fcheck % 31 != 0 || cinfo > 7 { - bail!("not zlib format"); + if cm != 8 { + bail!("unknown compression method"); + } + + if cinfo > 7 << 4 { + bail!("lz77 window size logarithm is invalid"); + } + + if fcheck % 31 != 0 { + bail!("invalid fcheck"); } if flg & FDICT != 0 {