From 3eac0c6097bfb329be89f6d5777a48f5d602ddd8 Mon Sep 17 00:00:00 2001 From: mertalev <101130780+mertalev@users.noreply.github.com> Date: Wed, 30 Oct 2024 20:01:03 -0400 Subject: [PATCH] warning instead of error for invalid icc --- AUTHORS | 1 + lib/jpegli/decode_marker.cc | 15 ++++++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/AUTHORS b/AUTHORS index 95873fe5..34944cfa 100644 --- a/AUTHORS +++ b/AUTHORS @@ -93,3 +93,4 @@ xiota Yonatan Nebenzhal Ziemowit Zabawa 源文雨 <41315874+fumiama@users.noreply.github.com> +Mert Alev <101130780+mertalev@users.noreply.github.com> diff --git a/lib/jpegli/decode_marker.cc b/lib/jpegli/decode_marker.cc index 57e95070..255e7e37 100644 --- a/lib/jpegli/decode_marker.cc +++ b/lib/jpegli/decode_marker.cc @@ -409,24 +409,29 @@ void ProcessAPP(j_decompress_ptr cinfo, const uint8_t* data, size_t len) { payload += sizeof(kIccProfileTag); payload_size -= sizeof(kIccProfileTag); if (payload_size < 2) { - JPEGLI_ERROR("ICC chunk is too small."); + JPEGLI_WARN("ICC chunk is too small."); + return; } uint8_t index = payload[0]; uint8_t total = payload[1]; ++m->icc_index_; if (m->icc_index_ != index) { - JPEGLI_ERROR("Invalid ICC chunk order."); + JPEGLI_WARN("Invalid ICC chunk order."); + return; } if (total == 0) { - JPEGLI_ERROR("Invalid ICC chunk total."); + JPEGLI_WARN("Invalid ICC chunk total."); + return; } if (m->icc_total_ == 0) { m->icc_total_ = total; } else if (m->icc_total_ != total) { - JPEGLI_ERROR("Invalid ICC chunk total."); + JPEGLI_WARN("Invalid ICC chunk total."); + return; } if (m->icc_index_ > m->icc_total_) { - JPEGLI_ERROR("Invalid ICC chunk index."); + JPEGLI_WARN("Invalid ICC chunk index."); + return; } m->icc_profile_.insert(m->icc_profile_.end(), payload + 2, payload + payload_size);