Fwd: [graphics/krita/krita/5.1] libs/psdutils: PSD: fix using implementation-defined signedness when decompressing RLE
L. E. Segovia
amy at amyspark.me
Sat Jan 21 11:23:54 GMT 2023
As I understand, yes. If you roll back to 5.1.4 you'll have the opposite
bug, failing to read PSDs due to padding errors in Cyrille's old routine.
> We can build 5.1.6 against Qt 5.16, but that sounds pretty dangerous...
I recall we intended to set up a stable dependency build to avoid this?
If so, and you're OK with the idea (especially as a future proof
measure) I could start working on adapting the CI job matrix.
amyspark
On 21/01/2023 05:56, Halla Rempt wrote:
> Does this mean that 5.1.5 is also broken on Apple M1? If so, what can we do here? For Android we could try to roll back to 5.1.4, I guess?
>
> We can build 5.1.6 against Qt 5.16, but that sounds pretty dangerous...
>
>
> ---------- Forwarded Message ----------
>
> Subject: [graphics/krita/krita/5.1] libs/psdutils: PSD: fix using implementation-defined signedness when decompressing RLE
> Date: zaterdag 14 januari 2023, 13:30:03 CET
> From: L. E. Segovia <null at kde.org>
> To: kde-commits at kde.org
>
> Git commit 4e69b49f8bbfc8feebf727e6410018521d12c040 by L. E. Segovia.
> Committed on 14/01/2023 at 12:29.
> Pushed by lsegovia into branch 'krita/5.1'.
>
> PSD: fix using implementation-defined signedness when decompressing RLE
>
> BUG: 464015
> (cherry picked from commit 0abf00babfa80689521a67fcdb4527fc980d25f7)
>
> M +3 -2 libs/psdutils/compression.cpp
>
> https://invent.kde.org/graphics/krita/commit/4e69b49f8bbfc8feebf727e6410018521d12c040
>
> diff --git a/libs/psdutils/compression.cpp b/libs/psdutils/compression.cpp
> index cca5415090..2b4b611acd 100644
> --- a/libs/psdutils/compression.cpp
> +++ b/libs/psdutils/compression.cpp
> @@ -93,7 +93,8 @@ QByteArray decompress(const QByteArray &input, int unpacked_len)
> auto *dst = output.begin();
>
> while (src < input.end() && dst < output.end()) {
> - const char n = *src; // NOLINT(readability-identifier-length)
> + // NOLINTNEXTLINE(*-reinterpret-cast,readability-identifier-length)
> + const int8_t n = *reinterpret_cast<const int8_t *>(src);
> src += 1;
>
> if (n >= 0) { // copy next n+1 chars
> @@ -119,7 +120,7 @@ QByteArray decompress(const QByteArray &input, int unpacked_len)
> errFile << "Output buffer exhausted in copy of" << bytes << "chars, left" << (output.end() - dst);
> return {};
> }
> - const char byte = *src;
> + const auto byte = *src;
> std::fill_n(dst, bytes, byte);
> src += 1;
> dst += bytes;
>
> -----------------------------------------
>
>
--
amyspark 🌸 https://www.amyspark.me
More information about the kimageshop
mailing list