Commit bf728816ce for aom
commit bf728816ce9e816a254104db1f134d7af67a13e6
Author: Wan-Teh Chang <wtc@google.com>
Date: Sat Oct 24 07:43:34 2026 -0700
wiener_test.cc: Remove two obsolete disabled tests
Remove the following two tests:
SearchWienerTest.DISABLED_12bitSignedIntegerOverflowInLinsolveWiener2
SearchWienerTest.DISABLED_12bitSignedIntegerOverflowInLinsolveWiener3
They can no longer reproduce the integer overflows because later changes
such as commit 73c9915 and commit aca9d9d made the code paths
unreachable. I verified that the fix for bug oss-fuzz:566951534
(commit 9469625) also fixed the integer overflows that these two tests
reproduced.
Bug: oss-fuzz:384759831, oss-fuzz:42537236
Change-Id: I454d1e05beff1cdcf53f164f9124accb874f0716
diff --git a/test/wiener_test.cc b/test/wiener_test.cc
index 1db4d6f3d1..84ecccd191 100644
--- a/test/wiener_test.cc
+++ b/test/wiener_test.cc
@@ -2369,240 +2369,5 @@ TEST(SearchWienerTest, 12bitSignedIntegerOverflowInLinsolveWiener) {
EXPECT_EQ(AOM_CODEC_OK, aom_codec_destroy(&enc));
}
-// A test that reproduces crbug.com/oss-fuzz/384759831: signed integer overflow
-// in linsolve_wiener().
-TEST(SearchWienerTest, DISABLED_12bitSignedIntegerOverflowInLinsolveWiener2) {
- constexpr int kWidth = 4;
- constexpr int kHeight = 2;
- static constexpr uint16_t kBuffer1[kWidth * kHeight] = {
- // Y plane:
- 32, 4095, 2080, 2592, 32, 3104, 4095, 32,
- };
- unsigned char *img_data1 =
- reinterpret_cast<unsigned char *>(const_cast<uint16_t *>(kBuffer1));
- static constexpr uint16_t kBuffer2[kWidth * kHeight] = {
- // Y plane:
- 4095, 4095, 2080, 4095, 4095, 32, 4095, 544,
- };
- unsigned char *img_data2 =
- reinterpret_cast<unsigned char *>(const_cast<uint16_t *>(kBuffer2));
- static constexpr uint16_t kBuffer3[kWidth * kHeight] = {
- // Y plane:
- 3872, 3872, 3872, 2848, 800, 4095, 32, 3104,
- };
- unsigned char *img_data3 =
- reinterpret_cast<unsigned char *>(const_cast<uint16_t *>(kBuffer3));
-
- aom_codec_iface_t *iface = aom_codec_av1_cx();
- aom_codec_enc_cfg_t cfg;
- EXPECT_EQ(AOM_CODEC_OK,
- aom_codec_enc_config_default(iface, &cfg, AOM_USAGE_GOOD_QUALITY));
- cfg.rc_end_usage = AOM_Q;
- cfg.g_profile = 2;
- cfg.g_bit_depth = AOM_BITS_12;
- cfg.g_input_bit_depth = 12;
- cfg.g_w = kWidth;
- cfg.g_h = kHeight;
- cfg.g_lag_in_frames = 0;
- cfg.g_threads = 32;
- cfg.monochrome = 1;
- cfg.rc_min_quantizer = 51;
- cfg.rc_max_quantizer = 55;
- aom_codec_ctx_t enc;
- EXPECT_EQ(AOM_CODEC_OK,
- aom_codec_enc_init(&enc, iface, &cfg, AOM_CODEC_USE_HIGHBITDEPTH));
- EXPECT_EQ(AOM_CODEC_OK, aom_codec_control(&enc, AOME_SET_CQ_LEVEL, 53));
- EXPECT_EQ(AOM_CODEC_OK, aom_codec_control(&enc, AV1E_SET_TILE_ROWS, 3));
- EXPECT_EQ(AOM_CODEC_OK, aom_codec_control(&enc, AV1E_SET_TILE_COLUMNS, 6));
- EXPECT_EQ(AOM_CODEC_OK, aom_codec_control(&enc, AOME_SET_CPUUSED, 6));
- EXPECT_EQ(AOM_CODEC_OK,
- aom_codec_control(&enc, AV1E_SET_COLOR_RANGE, AOM_CR_FULL_RANGE));
- EXPECT_EQ(AOM_CODEC_OK,
- aom_codec_control(&enc, AOME_SET_TUNING, AOM_TUNE_SSIM));
-
- aom_image_t img;
-
- // Encode frame
- EXPECT_EQ(&img, aom_img_wrap(&img, AOM_IMG_FMT_I42016, kWidth, kHeight, 1,
- img_data1));
- img.monochrome = 1;
- img.planes[1] = img.planes[2] = nullptr;
- img.stride[1] = img.stride[2] = 0;
- EXPECT_EQ(aom_codec_encode(&enc, &img, 0, 1, 0), AOM_CODEC_OK);
- aom_codec_iter_t iter = nullptr;
- const aom_codec_cx_pkt_t *pkt = aom_codec_get_cx_data(&enc, &iter);
- ASSERT_NE(pkt, nullptr);
- EXPECT_EQ(pkt->kind, AOM_CODEC_CX_FRAME_PKT);
- // pkt->data.frame.flags is 0x1f0011.
- EXPECT_EQ(pkt->data.frame.flags & AOM_FRAME_IS_KEY, AOM_FRAME_IS_KEY);
- pkt = aom_codec_get_cx_data(&enc, &iter);
- EXPECT_EQ(pkt, nullptr);
-
- // Encode frame
- EXPECT_EQ(&img, aom_img_wrap(&img, AOM_IMG_FMT_I42016, kWidth, kHeight, 1,
- img_data2));
- img.monochrome = 1;
- img.planes[1] = img.planes[2] = nullptr;
- img.stride[1] = img.stride[2] = 0;
- EXPECT_EQ(aom_codec_encode(&enc, &img, 0, 1, 0), AOM_CODEC_OK);
- iter = nullptr;
- pkt = aom_codec_get_cx_data(&enc, &iter);
- ASSERT_NE(pkt, nullptr);
- EXPECT_EQ(pkt->kind, AOM_CODEC_CX_FRAME_PKT);
- // pkt->data.frame.flags is 0x20000.
- EXPECT_EQ(pkt->data.frame.flags & AOM_FRAME_IS_KEY, 0u);
- pkt = aom_codec_get_cx_data(&enc, &iter);
- EXPECT_EQ(pkt, nullptr);
-
- // Encode frame
- EXPECT_EQ(&img, aom_img_wrap(&img, AOM_IMG_FMT_I42016, kWidth, kHeight, 1,
- img_data3));
- img.monochrome = 1;
- img.planes[1] = img.planes[2] = nullptr;
- img.stride[1] = img.stride[2] = 0;
- EXPECT_EQ(aom_codec_encode(&enc, &img, 0, 1, 0), AOM_CODEC_OK);
- iter = nullptr;
- pkt = aom_codec_get_cx_data(&enc, &iter);
- ASSERT_NE(pkt, nullptr);
- EXPECT_EQ(pkt->kind, AOM_CODEC_CX_FRAME_PKT);
- // pkt->data.frame.flags is 0x20000.
- EXPECT_EQ(pkt->data.frame.flags & AOM_FRAME_IS_KEY, 0u);
- pkt = aom_codec_get_cx_data(&enc, &iter);
- EXPECT_EQ(pkt, nullptr);
-
- // Flush encoder
- EXPECT_EQ(AOM_CODEC_OK, aom_codec_encode(&enc, nullptr, 0, 1, 0));
- iter = nullptr;
- pkt = aom_codec_get_cx_data(&enc, &iter);
- EXPECT_EQ(pkt, nullptr);
-
- EXPECT_EQ(AOM_CODEC_OK, aom_codec_destroy(&enc));
-}
-
-// A test that reproduces crbug.com/oss-fuzz/42537236: signed integer overflow
-// in linsolve_wiener().
-TEST(SearchWienerTest, DISABLED_12bitSignedIntegerOverflowInLinsolveWiener3) {
- constexpr int kWidth = 17;
- constexpr int kHeight = 6;
- // Since the image format is YUV 4:2:0, aom_img_wrap() expects the buffer is
- // allocated with width and height aligned to a multiple of 2. Align the
- // width to a multiple of 2 so that the stride set by aom_img_wrap() is
- // correct.
- static constexpr uint16_t kBuffer1[(kWidth + 1) * kHeight] = {
- // Y plane:
- // Row:
- 4095, 2408, 1907, 0, 1119, 0, 4095, 4095, 0, 4095, 2289, 4095, 0, 4095,
- 4095, 1545, 4095, 0,
- // Row:
- 4095, 3437, 4095, 0, 4095, 4095, 4095, 0, 0, 4095, 0, 0, 1694, 4095, 4095,
- 404, 2728, 0,
- // Row:
- 3756, 3051, 4095, 0, 0, 0, 841, 0, 0, 324, 0, 0, 0, 756, 4095, 2902, 0, 0,
- // Row:
- 0, 0, 4095, 2779, 4095, 4095, 0, 4095, 0, 0, 4095, 4095, 1626, 3491, 4095,
- 4095, 1617, 0,
- // Row:
- 4095, 4095, 0, 3039, 1218, 159, 4095, 3866, 4095, 438, 0, 0, 4095, 0, 0, 0,
- 0, 0,
- // Row:
- 1091, 0, 4095, 0, 3587, 0, 4095, 0, 1409, 4095, 4095, 0, 3399, 0, 0, 0, 428,
- 0
- };
- unsigned char *img_data1 =
- reinterpret_cast<unsigned char *>(const_cast<uint16_t *>(kBuffer1));
- static constexpr uint16_t kBuffer2[(kWidth + 1) * kHeight] = {
- // Y plane:
- // Row:
- 561, 4095, 0, 1627, 4095, 2115, 4095, 4095, 0, 3397, 664, 2409, 0, 1235, 0,
- 4095, 0, 0,
- // Row:
- 4095, 0, 1665, 0, 4095, 4095, 3541, 0, 4095, 1787, 2584, 4095, 0, 4095,
- 4095, 4095, 4095, 0,
- // Row:
- 4095, 4095, 4095, 0, 0, 0, 0, 0, 0, 69, 0, 4095, 4095, 882, 4095, 4095,
- 4095, 0,
- // Row:
- 4095, 3759, 4095, 0, 4095, 4095, 4095, 4095, 420, 0, 4095, 4095, 0, 0, 0, 0,
- 0, 0,
- // Row:
- 2855, 2411, 4095, 2167, 4095, 2731, 0, 4095, 0, 4095, 0, 4011, 4095, 4095,
- 0, 4095, 1964, 0,
- // Row:
- 4095, 2879, 2924, 0, 0, 4095, 3770, 4095, 0, 2172, 2825, 1287, 0, 4095,
- 4095, 0, 4095, 0
- };
- unsigned char *img_data2 =
- reinterpret_cast<unsigned char *>(const_cast<uint16_t *>(kBuffer2));
-
- aom_codec_iface_t *iface = aom_codec_av1_cx();
- aom_codec_enc_cfg_t cfg;
- EXPECT_EQ(AOM_CODEC_OK,
- aom_codec_enc_config_default(iface, &cfg, AOM_USAGE_GOOD_QUALITY));
- cfg.rc_end_usage = AOM_Q;
- cfg.g_profile = 2;
- cfg.g_bit_depth = AOM_BITS_12;
- cfg.g_input_bit_depth = 12;
- cfg.g_w = kWidth;
- cfg.g_h = kHeight;
- cfg.g_lag_in_frames = 0;
- cfg.g_threads = 34;
- cfg.monochrome = 1;
- cfg.rc_min_quantizer = 63;
- cfg.rc_max_quantizer = 63;
- aom_codec_ctx_t enc;
- EXPECT_EQ(AOM_CODEC_OK,
- aom_codec_enc_init(&enc, iface, &cfg, AOM_CODEC_USE_HIGHBITDEPTH));
- EXPECT_EQ(AOM_CODEC_OK, aom_codec_control(&enc, AOME_SET_CQ_LEVEL, 63));
- EXPECT_EQ(AOM_CODEC_OK, aom_codec_control(&enc, AV1E_SET_TILE_ROWS, 5));
- EXPECT_EQ(AOM_CODEC_OK, aom_codec_control(&enc, AV1E_SET_TILE_COLUMNS, 3));
- EXPECT_EQ(AOM_CODEC_OK, aom_codec_control(&enc, AOME_SET_CPUUSED, 6));
- EXPECT_EQ(AOM_CODEC_OK,
- aom_codec_control(&enc, AV1E_SET_COLOR_RANGE, AOM_CR_FULL_RANGE));
- EXPECT_EQ(AOM_CODEC_OK,
- aom_codec_control(&enc, AOME_SET_TUNING, AOM_TUNE_SSIM));
-
- aom_image_t img;
-
- // Encode frame
- EXPECT_EQ(&img, aom_img_wrap(&img, AOM_IMG_FMT_I42016, kWidth, kHeight, 1,
- img_data1));
- img.monochrome = 1;
- img.planes[1] = img.planes[2] = nullptr;
- img.stride[1] = img.stride[2] = 0;
- EXPECT_EQ(aom_codec_encode(&enc, &img, 0, 1, 0), AOM_CODEC_OK);
- aom_codec_iter_t iter = nullptr;
- const aom_codec_cx_pkt_t *pkt = aom_codec_get_cx_data(&enc, &iter);
- ASSERT_NE(pkt, nullptr);
- EXPECT_EQ(pkt->kind, AOM_CODEC_CX_FRAME_PKT);
- // pkt->data.frame.flags is 0x1f0011.
- EXPECT_EQ(pkt->data.frame.flags & AOM_FRAME_IS_KEY, AOM_FRAME_IS_KEY);
- pkt = aom_codec_get_cx_data(&enc, &iter);
- EXPECT_EQ(pkt, nullptr);
-
- // Encode frame
- EXPECT_EQ(&img, aom_img_wrap(&img, AOM_IMG_FMT_I42016, kWidth, kHeight, 1,
- img_data2));
- img.monochrome = 1;
- img.planes[1] = img.planes[2] = nullptr;
- img.stride[1] = img.stride[2] = 0;
- EXPECT_EQ(aom_codec_encode(&enc, &img, 0, 1, 0), AOM_CODEC_OK);
- iter = nullptr;
- pkt = aom_codec_get_cx_data(&enc, &iter);
- ASSERT_NE(pkt, nullptr);
- EXPECT_EQ(pkt->kind, AOM_CODEC_CX_FRAME_PKT);
- // pkt->data.frame.flags is 0x20000.
- EXPECT_EQ(pkt->data.frame.flags & AOM_FRAME_IS_KEY, 0u);
- pkt = aom_codec_get_cx_data(&enc, &iter);
- EXPECT_EQ(pkt, nullptr);
-
- // Flush encoder
- EXPECT_EQ(AOM_CODEC_OK, aom_codec_encode(&enc, nullptr, 0, 1, 0));
- iter = nullptr;
- pkt = aom_codec_get_cx_data(&enc, &iter);
- EXPECT_EQ(pkt, nullptr);
-
- EXPECT_EQ(AOM_CODEC_OK, aom_codec_destroy(&enc));
-}
-
} // namespace wiener_highbd
#endif // CONFIG_AV1_HIGHBITDEPTH