| extern crate inflate; |
| |
| fn get_test_file_data(name: &str) -> Vec<u8> { |
| use std::fs::File; |
| use std::io::Read; |
| let mut input = Vec::new(); |
| let mut f = File::open(name).unwrap(); |
| |
| f.read_to_end(&mut input).unwrap(); |
| input |
| } |
| |
| #[test] |
| /// See https://github.com/PistonDevelopers/inflate/issues/14 |
| fn issue_14() { |
| let test_data = get_test_file_data("tests/issue_14.zlib"); |
| let res = inflate::inflate_bytes_zlib(&test_data); |
| // This should fail as the file specifies code lengths that won't work. |
| assert!(res.is_err()); |
| } |
| |
| #[test] |
| /// Another input that produce invalid code lengths. |
| fn issue_16() { |
| let data = b"M\xff\xffM*\xad\xad\xad\xad\xad\xad\xad\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xadMCMMMM\x00\x00\x00\x00\x00\x00\x00\x00\x00!\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\xcb!\x0a"; |
| let mut stream = inflate::InflateStream::new(); |
| let res = stream.update(data); |
| assert!(res.is_err()); |
| } |
| |
| #[test] |
| /// Similar to 16 but with CLENS being invalid. |
| fn issue_17() { |
| let data = b"\xdd\xff\xff*M\x94ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\x01\x09\x00\x00\xf2\xf2MM\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00*M\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00MMMM\xff\xffM\xff\x00;MM0*\x00\x00\x00\x00\x00\x00\x0a"; |
| let mut stream = inflate::InflateStream::new(); |
| let res = stream.update(data); |
| assert!(res.is_err()); |
| } |