mirror of
https://github.com/rustdesk/magnum-opus.git
synced 2026-04-06 15:56:15 +00:00
30 lines
802 B
Rust
30 lines
802 B
Rust
// Based on libopus/tests/test_opus_padding.c
|
|
|
|
/* Check for overflow in reading the padding length.
|
|
* http://lists.xiph.org/pipermail/opus/2012-November/001834.html
|
|
*/
|
|
|
|
extern crate opus;
|
|
|
|
#[test]
|
|
fn test_overflow() {
|
|
const PACKETSIZE: usize = 16909318;
|
|
const CHANNELS: opus::Channels = opus::Channels::Stereo;
|
|
const FRAMESIZE: usize = 5760;
|
|
|
|
let mut input = vec![0xff; PACKETSIZE];
|
|
let mut output = vec![0i16; FRAMESIZE * 2];
|
|
|
|
input[0] = 0xff;
|
|
input[1] = 0x41;
|
|
*input.last_mut().unwrap() = 0x0b;
|
|
|
|
let mut decoder = opus::Decoder::new(48000, CHANNELS).unwrap();
|
|
let result = decoder.decode(&input[..], &mut output[..], false);
|
|
drop(decoder);
|
|
drop(input);
|
|
drop(output);
|
|
|
|
assert_eq!(result.unwrap_err().code(), opus::ErrorCode::InvalidPacket);
|
|
}
|