diff --git a/Tests/LibGfx/TestImageDecoder.cpp b/Tests/LibGfx/TestImageDecoder.cpp index 35f2915ba1..f61ae92013 100644 --- a/Tests/LibGfx/TestImageDecoder.cpp +++ b/Tests/LibGfx/TestImageDecoder.cpp @@ -270,7 +270,8 @@ TEST_CASE(test_jpeg_malformed_header) TEST_CASE(test_jpeg_malformed_frame) { Array test_inputs = { - TEST_INPUT("jpg/oss-fuzz-testcase-62584.jpg"sv) + TEST_INPUT("jpg/oss-fuzz-testcase-62584.jpg"sv), + TEST_INPUT("jpg/oss-fuzz-testcase-63815.jpg"sv) }; for (auto test_input : test_inputs) { diff --git a/Tests/LibGfx/test-inputs/jpg/oss-fuzz-testcase-63815.jpg b/Tests/LibGfx/test-inputs/jpg/oss-fuzz-testcase-63815.jpg new file mode 100644 index 0000000000..b28c6d380c Binary files /dev/null and b/Tests/LibGfx/test-inputs/jpg/oss-fuzz-testcase-63815.jpg differ diff --git a/Userland/Libraries/LibGfx/ImageFormats/JPEGLoader.cpp b/Userland/Libraries/LibGfx/ImageFormats/JPEGLoader.cpp index 3d2487ca4a..01668dc037 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/JPEGLoader.cpp +++ b/Userland/Libraries/LibGfx/ImageFormats/JPEGLoader.cpp @@ -296,11 +296,8 @@ public: { m_bit_offset += count; - if (m_bit_offset > bits_in_reservoir) { - // FIXME: I can't find a test case for that so let's leave it for later - // instead of inserting an hard-to-find bug. - TODO(); - } + if (m_bit_offset > bits_in_reservoir) + TRY(refill_reservoir()); return {}; }