diff options
author | James Zern <jzern@google.com> | 2017-06-07 20:46:13 -0700 |
---|---|---|
committer | James Zern <jzern@google.com> | 2017-06-08 23:16:04 +0000 |
commit | 45daecb4f73a47ab3236a29a3a48c52324cbf19a (patch) | |
tree | 7140fa811c11246ff7790823f4732c8b0ea3a278 /test | |
parent | 9cea3a3c4efc25e03781c60d34f867ff4f35e73e (diff) | |
download | libvpx-45daecb4f73a47ab3236a29a3a48c52324cbf19a.tar libvpx-45daecb4f73a47ab3236a29a3a48c52324cbf19a.tar.gz libvpx-45daecb4f73a47ab3236a29a3a48c52324cbf19a.tar.bz2 libvpx-45daecb4f73a47ab3236a29a3a48c52324cbf19a.zip |
vp8_decode_frame: fix oob read on truncated key frame
the check for error correction being disabled was overriding the data
length checks. this avoids returning incorrect information (width /
height) for the decoded frame which could result in inconsistent sizes
returned in to an application causing it to read beyond the bounds of
the frame allocation.
BUG=webm:1443
BUG=b/62458770
Change-Id: I063459674e01b57c0990cb29372e0eb9a1fbf342
Diffstat (limited to 'test')
-rw-r--r-- | test/invalid_file_test.cc | 13 | ||||
-rw-r--r-- | test/test-data.mk | 2 | ||||
-rw-r--r-- | test/test-data.sha1 | 2 |
3 files changed, 15 insertions, 2 deletions
diff --git a/test/invalid_file_test.cc b/test/invalid_file_test.cc index eae81faa1..3d9f5c16a 100644 --- a/test/invalid_file_test.cc +++ b/test/invalid_file_test.cc @@ -120,6 +120,15 @@ class InvalidFileTest : public ::libvpx_test::DecoderTest, TEST_P(InvalidFileTest, ReturnCode) { RunTest(); } +#if CONFIG_VP8_DECODER +const DecodeParam kVP8InvalidFileTests[] = { + { 1, "invalid-bug-1443.ivf" }, +}; + +VP8_INSTANTIATE_TEST_CASE(InvalidFileTest, + ::testing::ValuesIn(kVP8InvalidFileTests)); +#endif // CONFIG_VP8_DECODER + #if CONFIG_VP9_DECODER const DecodeParam kVP9InvalidFileTests[] = { { 1, "invalid-vp90-02-v2.webm" }, @@ -164,12 +173,12 @@ class InvalidFileInvalidPeekTest : public InvalidFileTest { TEST_P(InvalidFileInvalidPeekTest, ReturnCode) { RunTest(); } #if CONFIG_VP8_DECODER -const DecodeParam kVP8InvalidFileTests[] = { +const DecodeParam kVP8InvalidPeekTests[] = { { 1, "invalid-vp80-00-comprehensive-018.ivf.2kf_0x6.ivf" }, }; VP8_INSTANTIATE_TEST_CASE(InvalidFileInvalidPeekTest, - ::testing::ValuesIn(kVP8InvalidFileTests)); + ::testing::ValuesIn(kVP8InvalidPeekTests)); #endif // CONFIG_VP8_DECODER #if CONFIG_VP9_DECODER diff --git a/test/test-data.mk b/test/test-data.mk index b39ab8763..1656372b3 100644 --- a/test/test-data.mk +++ b/test/test-data.mk @@ -732,6 +732,8 @@ LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp93-2-20-12bit-yuv444.webm.md5 endif # CONFIG_VP9_HIGHBITDEPTH # Invalid files for testing libvpx error checking. +LIBVPX_TEST_DATA-$(CONFIG_VP8_DECODER) += invalid-bug-1443.ivf +LIBVPX_TEST_DATA-$(CONFIG_VP8_DECODER) += invalid-bug-1443.ivf.res LIBVPX_TEST_DATA-$(CONFIG_VP8_DECODER) += invalid-vp80-00-comprehensive-018.ivf.2kf_0x6.ivf LIBVPX_TEST_DATA-$(CONFIG_VP8_DECODER) += invalid-vp80-00-comprehensive-018.ivf.2kf_0x6.ivf.res LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += invalid-vp90-01-v3.webm diff --git a/test/test-data.sha1 b/test/test-data.sha1 index 22ca6f564..7948f9e3f 100644 --- a/test/test-data.sha1 +++ b/test/test-data.sha1 @@ -848,3 +848,5 @@ a000d568431d07379dd5a8ec066061c07e560b47 *invalid-vp90-2-00-quantizer-63.ivf.kf_ 6fa3d3ac306a3d9ce1d610b78441dc00d2c2d4b9 *tos_vp8.webm e402cbbf9e550ae017a1e9f1f73931c1d18474e8 *invalid-crbug-667044.webm d3964f9dad9f60363c81b688324d95b4ec7c8038 *invalid-crbug-667044.webm.res +fd9df7f3f6992af1d7a9dde975c9a0d6f28c053d *invalid-bug-1443.ivf +fd3020fa6e9ca5966206738654c97dec313b0a95 *invalid-bug-1443.ivf.res |