From f63c349053b491f46ed8883684329353c6255194 Mon Sep 17 00:00:00 2001 From: Leon Scroggins III Date: Wed, 13 Jan 2021 14:32:59 -0500 Subject: [PATCH] Improve AImageDecoder fuzzer Bug: 169137236 Bug: 169139756 Test: this (fuzzer) Extend the fuzzer to test animations. Also test a lossless webp, left out of Ib227639bf8da75f0e8e31e216bc6d1371e24cb75. Change-Id: I81d35d6fa7d560b33b6a2b5d6c1992cbdd77bc87 --- .../jni/corpus/webp-color-profile-lossless.webp | Bin 0 -> 43866 bytes native/graphics/jni/fuzz_imagedecoder.cpp | 8 +++++++- 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 native/graphics/jni/corpus/webp-color-profile-lossless.webp diff --git a/native/graphics/jni/corpus/webp-color-profile-lossless.webp b/native/graphics/jni/corpus/webp-color-profile-lossless.webp new file mode 100644 index 0000000000000000000000000000000000000000..4fd63d5794ffa747869d0e6d40d8e6eb3aa3ae2c GIT binary patch literal 43866 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

$(y-L0!KHt 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 DJzLBH literal 0 HcmV?d00001 diff --git a/native/graphics/jni/fuzz_imagedecoder.cpp b/native/graphics/jni/fuzz_imagedecoder.cpp index f2cd1a8f4eb93..015aca70e4e0b 100644 --- a/native/graphics/jni/fuzz_imagedecoder.cpp +++ b/native/graphics/jni/fuzz_imagedecoder.cpp @@ -73,6 +73,12 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { return 0; } - AImageDecoder_decodeImage(decoder.get(), pixels.get(), stride, pixelSize); + while (true) { + int result = AImageDecoder_decodeImage(decoder.get(), pixels.get(), stride, pixelSize); + if (result != ANDROID_IMAGE_DECODER_SUCCESS) break; + + result = AImageDecoder_advanceFrame(decoder.get()); + if (result != ANDROID_IMAGE_DECODER_SUCCESS) break; + } return 0; }