X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-commonfmt%2Fsrc%2Fdemuxers%2Favi.rs;h=dc8ea6bac1cf94d8faee065b996fb387c134f4bf;hb=87c1d4760328a32f6b78628a30c817d60f552847;hp=c4b4817c633b335e62b01b739f3668da4ba7b8c2;hpb=51382a9ad683e7b4d5907f63cd8e103f531f577c;p=nihav.git diff --git a/nihav-commonfmt/src/demuxers/avi.rs b/nihav-commonfmt/src/demuxers/avi.rs index c4b4817..dc8ea6b 100644 --- a/nihav-commonfmt/src/demuxers/avi.rs +++ b/nihav-commonfmt/src/demuxers/avi.rs @@ -168,7 +168,11 @@ impl<'a> DemuxCore<'a> for AVIDemuxer<'a> { continue; } let str = strmgr.get_stream(stream_no as usize); - if str.is_none() { return Err(InvalidData); } + if str.is_none() { + self.src.read_skip(size)?; + self.movi_size -= size + 8; + continue; + } let stream = str.unwrap(); if size == 0 { self.movi_size -= 8; @@ -819,7 +823,7 @@ fn parse_odml_ix(src: &mut ByteReader, strmgr: &mut StreamManager, seek_idx: &mu let idx_type = src.read_byte()?; validate!(sub_type == 0 && idx_type == 1); let entries = src.read_u32le()? as usize; - validate!(size == 24 + entries * 4 * entry_size); + validate!(size >= 24 + entries * 4 * entry_size); src.read_tag()?; //chunk id let base_offset = src.read_u64le()?; src.read_u32le()?; //reserved