diff --git a/server/Dockerfile b/server/Dockerfile index 2b76d16..f3f7bf4 100644 --- a/server/Dockerfile +++ b/server/Dockerfile @@ -108,12 +108,14 @@ RUN ./configure-apt.sh && \ apt-get remove -yqq jq wget ca-certificates && \ apt-get autoremove -yqq && \ apt-get clean && \ - dpkg -r --force-depends libjpeg62-turbo && \ rm -rf \ configure-apt.sh \ install-ffmpeg.sh \ *.deb \ - /var/lib/apt/lists + /var/lib/apt/lists \ + /usr/lib/$(arch)-linux-gnu/libjpeg.so* \ + /usr/share/doc/libjpeg62-turbo \ + /usr/share/lintian/overrides/libjpeg62-turbo COPY --from=dev /usr/local/lib/ /usr/local/lib/ COPY --from=dev /build/geodata/ /build/geodata/ 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-empty-dht-marker.patch b/server/bin/patches/jpegli-empty-dht-marker.patch similarity index 100% rename from server/bin/jpegli-empty-dht-marker.patch rename to server/bin/patches/jpegli-empty-dht-marker.patch diff --git a/server/bin/patches/jpegli-icc-warning.patch b/server/bin/patches/jpegli-icc-warning.patch new file mode 100644 index 0000000..e21552c --- /dev/null +++ b/server/bin/patches/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);