@@ -33,6 +33,7 @@ static IMAGE_AVIF_EXTENTS: &str = "tests/kodim-extents.avif";
33
33
static IMAGE_AVIF_CORRUPT : & str = "tests/corrupt/bug-1655846.avif" ;
34
34
static IMAGE_AVIF_CORRUPT_2 : & str = "tests/corrupt/bug-1661347.avif" ;
35
35
static IMAGE_AVIF_CORRUPT_3 : & str = "tests/corrupt/bad-ipma-version.avif" ;
36
+ static IMAGE_AVIF_CORRUPT_4 : & str = "tests/corrupt/bad-ipma-flags.avif" ;
36
37
static IMAGE_AVIF_GRID : & str = "av1-avif/testFiles/Microsoft/Summer_in_Tomsk_720p_5x4_grid.avif" ;
37
38
static AVIF_TEST_DIRS : & [ & str ] = & [ "tests" , "av1-avif/testFiles" ] ;
38
39
static AVIF_CORRUPT_IMAGES : & str = "tests/corrupt" ;
@@ -643,11 +644,8 @@ fn public_avif_bug_1661347() {
643
644
assert ! ( mp4:: read_avif( input) . is_err( ) ) ;
644
645
}
645
646
646
- #[ test]
647
- fn public_avif_bad_ipma_version ( ) {
648
- let input = & mut File :: open ( IMAGE_AVIF_CORRUPT_3 ) . expect ( "Unknown file" ) ;
649
- let expected_msg = "The version 0 should be used unless 32-bit item_ID values are needed" ;
650
- match mp4:: read_avif ( input) {
647
+ fn assert_invalid_data < T : std:: fmt:: Debug > ( result : mp4:: Result < T > , expected_msg : & str ) {
648
+ match result {
651
649
Err ( Error :: InvalidData ( msg) ) if msg == expected_msg => { }
652
650
r => panic ! (
653
651
"Expected Err(Error::InvalidData({:?})), found {:?}" ,
@@ -656,6 +654,20 @@ fn public_avif_bad_ipma_version() {
656
654
}
657
655
}
658
656
657
+ #[ test]
658
+ fn public_avif_bad_ipma_version ( ) {
659
+ let input = & mut File :: open ( IMAGE_AVIF_CORRUPT_3 ) . expect ( "Unknown file" ) ;
660
+ let expected_msg = "The version 0 should be used unless 32-bit item_ID values are needed" ;
661
+ assert_invalid_data ( mp4:: read_avif ( input) , expected_msg) ;
662
+ }
663
+
664
+ #[ test]
665
+ fn public_avif_bad_ipma_flags ( ) {
666
+ let input = & mut File :: open ( IMAGE_AVIF_CORRUPT_4 ) . expect ( "Unknown file" ) ;
667
+ let expected_msg = "flags should be equal to 0 unless there are more than 127 properties in the ItemPropertyContainerBox" ;
668
+ assert_invalid_data ( mp4:: read_avif ( input) , expected_msg) ;
669
+ }
670
+
659
671
#[ test]
660
672
#[ ignore] // Remove when we add support; see https://github.com/mozilla/mp4parse-rust/issues/198
661
673
fn public_avif_primary_item_is_grid ( ) {
0 commit comments