Check if tg_end is less than NumTiles.
The tg_end field of the last tile group is equal to NumTiles - 1.
Therefore, the tg_end field of any tile group must be less than
NumTiles, even though this requirement is not explicitly stated in the
AV1 spec.
BUG=oss-fuzz:15363
Change-Id: I278ad517ad9813d242fd51abacb564019646b4bb
diff --git a/av1/decoder/obu.c b/av1/decoder/obu.c
index ef7619a..e41fed4 100644
--- a/av1/decoder/obu.c
+++ b/av1/decoder/obu.c
@@ -301,8 +301,16 @@
*end_tile = aom_rb_read_literal(rb, tile_bits);
}
if (*start_tile > *end_tile) {
+ aom_internal_error(
+ &cm->error, AOM_CODEC_CORRUPT_FRAME,
+ "tg_end (%d) must be greater than or equal to tg_start (%d)", *end_tile,
+ *start_tile);
+ return -1;
+ }
+ if (*end_tile >= num_tiles) {
aom_internal_error(&cm->error, AOM_CODEC_CORRUPT_FRAME,
- "tg_end must be greater than or equal to tg_start");
+ "tg_end (%d) must be less than NumTiles (%d)", *end_tile,
+ num_tiles);
return -1;
}
diff --git a/test/invalid_file_test.cc b/test/invalid_file_test.cc
index c2f128c..470dfe7 100644
--- a/test/invalid_file_test.cc
+++ b/test/invalid_file_test.cc
@@ -143,6 +143,7 @@
{ 1, "invalid-oss-fuzz-11477.ivf", NULL },
{ 1, "invalid-oss-fuzz-11479.ivf", "invalid-oss-fuzz-11479.ivf.res.2" },
{ 1, "invalid-oss-fuzz-11523.ivf", "invalid-oss-fuzz-11523.ivf.res.2" },
+ { 4, "invalid-oss-fuzz-15363.ivf", NULL },
};
AV1_INSTANTIATE_TEST_CASE(InvalidFileTest,
diff --git a/test/test-data.sha1 b/test/test-data.sha1
index 6992886..22bb4cd 100644
--- a/test/test-data.sha1
+++ b/test/test-data.sha1
@@ -28,6 +28,8 @@
b1a45514f0c59be03c9991cd04882426b9b930fa *invalid-oss-fuzz-11523.ivf
7c44ac1723c14d98bcb888fbf118c959511519ba *invalid-oss-fuzz-11523.ivf.res
3198c7af55a7d50173ce3c369c0cf2d9cdfface6 *invalid-oss-fuzz-11523.ivf.res.2
+cb445173be760c3554f1740ce4d119f57a7be043 *invalid-oss-fuzz-15363.ivf
+d3964f9dad9f60363c81b688324d95b4ec7c8038 *invalid-oss-fuzz-15363.ivf.res
ccbe4081557eb44820a0e6337c4a094421826b9a *invalid-oss-fuzz-9288.ivf
67c54283fe1a26ccf02cc991e4f9a1eea3ac5e78 *invalid-oss-fuzz-9288.ivf.res
c0960f032484579f967881cc025b71cfd7a79ee1 *invalid-oss-fuzz-9463.ivf
diff --git a/test/test_data_util.cmake b/test/test_data_util.cmake
index fab3314..d646de6 100644
--- a/test/test_data_util.cmake
+++ b/test/test_data_util.cmake
@@ -541,6 +541,8 @@
"invalid-oss-fuzz-11523.ivf"
"invalid-oss-fuzz-11523.ivf.res"
"invalid-oss-fuzz-11523.ivf.res.2"
+ "invalid-oss-fuzz-15363.ivf"
+ "invalid-oss-fuzz-15363.ivf.res"
"invalid-oss-fuzz-9288.ivf"
"invalid-oss-fuzz-9288.ivf.res"
"invalid-oss-fuzz-9463.ivf"