From c0c48afe062f6715db3a9106ef65818b575c2772 Mon Sep 17 00:00:00 2001 From: Lucas CHOLLET Date: Sun, 19 Feb 2023 22:35:10 -0500 Subject: [PATCH] LibGfx: Return from `scan_huffman_stream` before `JPEG_EOI` As a JPEG file can contain multiples scans, we should return from `scan_huffman_stream` on all new markers (except restart markers) and not only `JPEG_EOI`. --- Userland/Libraries/LibGfx/JPEGLoader.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Userland/Libraries/LibGfx/JPEGLoader.cpp b/Userland/Libraries/LibGfx/JPEGLoader.cpp index ef6858e718..ce060d95da 100644 --- a/Userland/Libraries/LibGfx/JPEGLoader.cpp +++ b/Userland/Libraries/LibGfx/JPEGLoader.cpp @@ -1217,15 +1217,15 @@ static ErrorOr scan_huffman_stream(AK::SeekableStream& stream, JPEGLoading continue; } Marker marker = 0xFF00 | current_byte; - if (marker == JPEG_EOI) - return {}; if (marker >= JPEG_RST0 && marker <= JPEG_RST7) { context.huffman_stream.stream.append(marker); current_byte = TRY(stream.read_value()); continue; } - dbgln_if(JPEG_DEBUG, "{}: Invalid marker: {:x}!", TRY(stream.tell()), marker); - return Error::from_string_literal("Invalid marker"); + + // Rollback the marker we just read + TRY(stream.seek(-2, AK::SeekMode::FromCurrentPosition)); + return {}; } else { context.huffman_stream.stream.append(last_byte); }