From 7036fd14752f257c1832438e85efcf7630dc4cbd Mon Sep 17 00:00:00 2001 From: zhaona45 Date: Fri, 22 Aug 2025 15:24:20 +0800 Subject: [PATCH] Repair JpegDecoderYuv Fuzz. Signed-off-by: zhaona45 --- .../src/image_jpeg_yuv_plugin_fuzz.cpp | 33 +++++++++---------- 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/frameworks/innerkitsimpl/test/fuzztest/imagejpegyuvplugin_fuzzer/src/image_jpeg_yuv_plugin_fuzz.cpp b/frameworks/innerkitsimpl/test/fuzztest/imagejpegyuvplugin_fuzzer/src/image_jpeg_yuv_plugin_fuzz.cpp index d9828a4f4..c2ae5da67 100644 --- a/frameworks/innerkitsimpl/test/fuzztest/imagejpegyuvplugin_fuzzer/src/image_jpeg_yuv_plugin_fuzz.cpp +++ b/frameworks/innerkitsimpl/test/fuzztest/imagejpegyuvplugin_fuzzer/src/image_jpeg_yuv_plugin_fuzz.cpp @@ -43,8 +43,9 @@ namespace { static constexpr uint32_t ALPHA_TYPE_MODULE = 4; static constexpr uint32_t RESOLUTION_QUALITY_MODULE = 4; static constexpr uint32_t PIXEL_FORMAT_MODULE = 105; + static constexpr uint32_t NUM_0 = 0; + static constexpr uint32_t MAX_IMAGE_SIZE = 8192; - std::vector JPEG_BUFFER; std::vector YUV_BUFFER; unsigned char g_mockPlanes[YUVCOMPONENT_SIZE] = { 0 }; @@ -141,30 +142,26 @@ DecodeContext ConstructDecodeContext() return context; } -JpegDecoderYuvParameter ConstructJpegDecoderYuvParameter() +JpegDecoderYuvParameter ConstructJpegDecoderYuvParameter(const uint8_t *data, size_t size) { - uint32_t jpegBufferSize = FDP->ConsumeIntegral(); - uint32_t yuvBufferSize = FDP->ConsumeIntegral(); - uint8_t *jpegBuffer { nullptr }; uint8_t *yuvBuffer { nullptr }; - if (jpegBufferSize != 0) { - JPEG_BUFFER = FDP->ConsumeBytes(jpegBufferSize); - jpegBuffer = JPEG_BUFFER.data(); - } + uint32_t yuvWidth = FDP->ConsumeIntegralInRange(NUM_0, MAX_IMAGE_SIZE); + uint32_t yuvHeight = FDP->ConsumeIntegralInRange(NUM_0, MAX_IMAGE_SIZE); + uint32_t yuvBufferSize = JpegDecoderYuv::GetYuvOutSize(yuvWidth, yuvHeight); if (yuvBufferSize != 0) { YUV_BUFFER = FDP->ConsumeBytes(yuvBufferSize); yuvBuffer = YUV_BUFFER.data(); } return JpegDecoderYuvParameter { - .jpgwidth_ = FDP->ConsumeIntegral(), - .jpgheight_ = FDP->ConsumeIntegral(), - .jpegBuffer_ = jpegBuffer, - .jpegBufferSize_ = jpegBufferSize, + .jpgwidth_ = 0, + .jpgheight_ = 0, + .jpegBuffer_ = data, + .jpegBufferSize_ = size, .yuvBuffer_ = yuvBuffer, .yuvBufferSize_ = yuvBufferSize, .outfmt_ = static_cast(FDP->ConsumeIntegralInRange(1, JPEG_YUV_FMT_MODULE)), - .outwidth_ = FDP->ConsumeIntegral(), - .outheight_ = FDP->ConsumeIntegral() }; + .outwidth_ = yuvWidth, + .outheight_ = yuvHeight }; } YuvPlaneInfo ConstructYuvPlaneInfo() @@ -286,13 +283,13 @@ void IsYU12YV12FormatFuzzTest() static_cast(FDP->ConsumeIntegralInRange(1, JPEG_YUV_FMT_MODULE))); } -void DoDecodeFuzzTest(std::shared_ptr jpegDecoderYuv) +void DoDecodeFuzzTest(std::shared_ptr jpegDecoderYuv, const uint8_t *data, size_t size) { if (!jpegDecoderYuv) { return; } DecodeContext context = ConstructDecodeContext(); - JpegDecoderYuvParameter jpegDecoderYuvParameter = ConstructJpegDecoderYuvParameter(); + JpegDecoderYuvParameter jpegDecoderYuvParameter = ConstructJpegDecoderYuvParameter(data, size); jpegDecoderYuv->DoDecode(context, jpegDecoderYuvParameter); } @@ -315,7 +312,7 @@ void JpegDecoderYuvFuzzTest001(const uint8_t *data, size_t size) InitPlaneOutInfoTo420FuzzTest(); InitPlaneOutInfoTo420NVFuzzTest(); IsYU12YV12FormatFuzzTest(); - DoDecodeFuzzTest(jpegDecoderYuv); + DoDecodeFuzzTest(jpegDecoderYuv, data, size); } } // namespace Media } // namespace OHOS -- Gitee