From 4d1c99e414df0beb8d6d5f5f19eca9665fdda240 Mon Sep 17 00:00:00 2001 From: Lucas CHOLLET Date: Tue, 9 Jan 2024 23:09:45 -0500 Subject: [PATCH] LibGfx/TIFF: Don't crash on RGBPalette images without a ColorMap --- Userland/Libraries/LibGfx/ImageFormats/TIFFLoader.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Userland/Libraries/LibGfx/ImageFormats/TIFFLoader.cpp b/Userland/Libraries/LibGfx/ImageFormats/TIFFLoader.cpp index 82ad9505ba..606bb375ac 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/TIFFLoader.cpp +++ b/Userland/Libraries/LibGfx/ImageFormats/TIFFLoader.cpp @@ -43,6 +43,14 @@ public: return {}; } + ErrorOr ensure_conditional_tags_are_present() const + { + if (m_metadata.photometric_interpretation() == PhotometricInterpretation::RGBPalette && !m_metadata.color_map().has_value()) + return Error::from_string_literal("TIFFImageDecoderPlugin: RGBPalette image doesn't contain a color map"); + + return {}; + } + ErrorOr ensure_baseline_tags_are_correct() const { if (m_metadata.strip_offsets()->size() != m_metadata.strip_byte_counts()->size()) @@ -58,6 +66,7 @@ public: { TRY(ensure_baseline_tags_are_present(m_metadata)); TRY(ensure_baseline_tags_are_correct()); + TRY(ensure_conditional_tags_are_present()); auto maybe_error = decode_frame_impl(); if (maybe_error.is_error()) {