Add a test that reproduces issue 2998 The bug fix is https://aomedia-review.googlesource.com/c/aom/+/134604. The test is adapted from the reproducer test case attached to the bug report. BUG=aomedia:2998 Change-Id: I8c540db10c9f176aa353be5a48b2b925c0a89701
diff --git a/test/aom_image_test.cc b/test/aom_image_test.cc new file mode 100644 index 0000000..7ff82d7 --- /dev/null +++ b/test/aom_image_test.cc
@@ -0,0 +1,31 @@ +/* + * Copyright (c) 2021, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 2 Clause License and + * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License + * was not distributed with this source code in the LICENSE file, you can + * obtain it at www.aomedia.org/license/software. If the Alliance for Open + * Media Patent License 1.0 was not distributed with this source code in the + * PATENTS file, you can obtain it at www.aomedia.org/license/patent. + */ + +#include "aom/aom_image.h" +#include "third_party/googletest/src/googletest/include/gtest/gtest.h" + +TEST(AomImageTest, AomImgWrapInvalidAlign) { + const int kWidth = 128; + const int kHeight = 128; + unsigned char buf[kWidth * kHeight * 3]; + + aom_image_t img; + // Set img_data and img_data_owner to junk values. aom_img_wrap() should + // not read these values on failure. + img.img_data = (unsigned char *)""; + img.img_data_owner = 1; + + aom_img_fmt_t format = AOM_IMG_FMT_I444; + // 'align' must be a power of 2 but is not. This causes the aom_img_wrap() + // call to fail. The test verifies we do not read the junk values in 'img'. + unsigned int align = 31; + EXPECT_EQ(aom_img_wrap(&img, format, kWidth, kHeight, align, buf), nullptr); +}
diff --git a/test/test.cmake b/test/test.cmake index 9d25753..9305d18 100644 --- a/test/test.cmake +++ b/test/test.cmake
@@ -25,6 +25,7 @@ list(APPEND AOM_UNIT_TEST_COMMON_SOURCES "${AOM_ROOT}/test/acm_random.h" + "${AOM_ROOT}/test/aom_image_test.cc" "${AOM_ROOT}/test/aom_integer_test.cc" "${AOM_ROOT}/test/av1_config_test.cc" "${AOM_ROOT}/test/av1_key_value_api_test.cc"