Skip to content

Commit 34b5100

Browse files
authored
Merge pull request mozilla#241 from mozilla/bug-1661347
Return error if any of the primary item data is missing
2 parents 9a3519e + cf88608 commit 34b5100

File tree

3 files changed

+13
-1
lines changed

3 files changed

+13
-1
lines changed

mp4parse/src/lib.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1318,7 +1318,11 @@ pub fn read_avif<T: Read>(f: &mut T, context: &mut AvifContext) -> Result<()> {
13181318

13191319
context.primary_item = primary_item_extents_data.concat()?;
13201320

1321-
Ok(())
1321+
if primary_item_extents_data.iter().any(TryVec::is_empty) {
1322+
Err(Error::InvalidData("Primary item data incomplete"))
1323+
} else {
1324+
Ok(())
1325+
}
13221326
}
13231327

13241328
/// Parse a metadata box in the context of an AVIF

mp4parse/tests/bug-1661347.avif

8.27 KB
Binary file not shown.

mp4parse/tests/public.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ static VIDEO_EME_CBCS_MP4: &str = "tests/bipbop_cbcs_video_init.mp4";
2929
static VIDEO_AV1_MP4: &str = "tests/tiny_av1.mp4";
3030
static IMAGE_AVIF: &str = "av1-avif/testFiles/Microsoft/Monochrome.avif";
3131
static IMAGE_AVIF_CORRUPT: &str = "tests/bug-1655846.avif";
32+
static IMAGE_AVIF_CORRUPT_2: &str = "tests/bug-1661347.avif";
3233
static IMAGE_AVIF_GRID: &str = "av1-avif/testFiles/Microsoft/Summer_in_Tomsk_720p_5x4_grid.avif";
3334
static AVIF_TEST_DIR: &str = "av1-avif/testFiles";
3435

@@ -635,6 +636,13 @@ fn public_avif_bug_1655846() {
635636
assert!(mp4::read_avif(input, context).is_err());
636637
}
637638

639+
#[test]
640+
fn public_avif_bug_1661347() {
641+
let context = &mut mp4::AvifContext::new();
642+
let input = &mut File::open(IMAGE_AVIF_CORRUPT_2).expect("Unknown file");
643+
assert!(mp4::read_avif(input, context).is_err());
644+
}
645+
638646
#[test]
639647
#[ignore] // Remove when we add support; see https://github.com/mozilla/mp4parse-rust/issues/198
640648
fn public_avif_primary_item_is_grid() {

0 commit comments

Comments
 (0)