From 45181e8eafea4df288a8fe7ae464360e43154c9b Mon Sep 17 00:00:00 2001 From: Tim Ledbetter Date: Wed, 17 Jan 2024 20:10:41 +0000 Subject: [PATCH] Fuzzers: Continue if frame is malformed in GIF fuzzer --- Meta/Lagom/Fuzzers/FuzzGIFLoader.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Meta/Lagom/Fuzzers/FuzzGIFLoader.cpp b/Meta/Lagom/Fuzzers/FuzzGIFLoader.cpp index 7efb45e944..3bc5354330 100644 --- a/Meta/Lagom/Fuzzers/FuzzGIFLoader.cpp +++ b/Meta/Lagom/Fuzzers/FuzzGIFLoader.cpp @@ -30,9 +30,14 @@ extern "C" int LLVMFuzzerTestOneInput(uint8_t const* data, size_t size) dbgln_if(GIF_DEBUG, "loop_count: {}", gif_decoder.loop_count()); dbgln_if(GIF_DEBUG, "frame_count: {}", gif_decoder.frame_count()); for (size_t i = 0; i < gif_decoder.frame_count(); ++i) { - auto ifd = gif_decoder.frame(i).release_value_but_fixme_should_propagate_errors(); - dbgln_if(GIF_DEBUG, "frame #{} size: {}", i, ifd.image->size()); - dbgln_if(GIF_DEBUG, "frame #{} duration: {}", i, ifd.duration); + auto ifd_or_error = gif_decoder.frame(i); + if (ifd_or_error.is_error()) { + dbgln_if(GIF_DEBUG, "frame #{} error: {}", i, ifd_or_error.release_error()); + } else { + auto ifd = ifd_or_error.release_value(); + dbgln_if(GIF_DEBUG, "frame #{} size: {}", i, ifd.image->size()); + dbgln_if(GIF_DEBUG, "frame #{} duration: {}", i, ifd.duration); + } } dbgln_if(GIF_DEBUG, "Done."); }