From 8116ba4eaa36664e53aadf09a4901fa86bde1863 Mon Sep 17 00:00:00 2001 From: Yannis Guyon Date: Fri, 19 Jan 2024 15:02:02 +0000 Subject: [PATCH] Avoid avif_fuzztest_read_image timeout in sharpyuv (#1957) --- tests/gtest/avif_fuzztest_read_image.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/gtest/avif_fuzztest_read_image.cc b/tests/gtest/avif_fuzztest_read_image.cc index 557650b58d..ecae3ae92c 100644 --- a/tests/gtest/avif_fuzztest_read_image.cc +++ b/tests/gtest/avif_fuzztest_read_image.cc @@ -63,10 +63,17 @@ void ReadImageFile(const std::string& arbitrary_bytes, // OSS-Fuzz limits the allocated memory to 2560 MB. Consider 16-bit samples. constexpr uint32_t kImageSizeLimit = 2560u * 1024 * 1024 / AVIF_MAX_AV1_LAYER_COUNT / sizeof(uint16_t); + // SharpYUV is computationally expensive. Avoid timeouts. + const uint32_t imageSizeLimit = + (chroma_downsampling == AVIF_CHROMA_DOWNSAMPLING_SHARP_YUV && + requested_format == AVIF_PIXEL_FORMAT_YUV420) + ? kImageSizeLimit / 4 + : kImageSizeLimit; + const avifAppFileFormat file_format = avifReadImage( file_path.c_str(), requested_format, requested_depth, chroma_downsampling, ignore_color_profile, ignore_exif, ignore_xmp, allow_changing_cicp, - ignore_gain_map, kImageSizeLimit, avif_image.get(), &out_depth, &timing, + ignore_gain_map, imageSizeLimit, avif_image.get(), &out_depth, &timing, /*frameIter=*/nullptr); if (file_format != AVIF_APP_FILE_FORMAT_UNKNOWN) {