From c13a2515d8216f2bdcc23ed4866c44b0280c2d22 Mon Sep 17 00:00:00 2001 From: mertalev <101130780+mertalev@users.noreply.github.com> Date: Wed, 30 Oct 2024 20:03:04 -0400 Subject: [PATCH] warning instead of error for invalid icc --- server/bin/build-libjxl.sh | 1 + server/bin/jpegli-icc-warning.patch | 39 +++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 server/bin/jpegli-icc-warning.patch diff --git a/server/bin/build-libjxl.sh b/server/bin/build-libjxl.sh index fc8cd3a..21d61e2 100755 --- a/server/bin/build-libjxl.sh +++ b/server/bin/build-libjxl.sh @@ -21,6 +21,7 @@ cd libjxl git reset --hard "$LIBJXL_REVISION" git submodule update --init --recursive --depth 1 --recommend-shallow git apply ../jpegli-empty-dht-marker.patch # adapted from https://github.com/libjxl/libjxl/pull/2704 +git apply ../jpegli-icc-warning.patch mkdir build cd build diff --git a/server/bin/jpegli-icc-warning.patch b/server/bin/jpegli-icc-warning.patch new file mode 100644 index 0000000..e21552c --- /dev/null +++ b/server/bin/jpegli-icc-warning.patch @@ -0,0 +1,39 @@ +diff --git a/lib/jpegli/decode_marker.cc b/lib/jpegli/decode_marker.cc +index 2621ed08..33cbb8be 100644 +--- a/lib/jpegli/decode_marker.cc ++++ b/lib/jpegli/decode_marker.cc +@@ -408,24 +408,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);