File 0002-Fix-broken-padding-in-BitReader.patch of Package kdegraphics-mobipocket
From a5b423d58133c46791cc53e6d67425366f94b266 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <stefan.bruens@rwth-aachen.de>
Date: Fri, 28 Feb 2025 23:24:56 +0100
Subject: [PATCH 2/4] Fix broken padding in BitReader
The overload taking a char* appends the \0 terminated string, i.e.
QByteArray::append("\x0...") is essentially a noop. This causes
out-of-bounds accesses, either causing asserts or reading invalid data.
See https://doc.qt.io/qt-6/qbytearray.html#append-3
SENTRY: OKULAR-AD
SENTRY: BALOO-33
SENTRY: BALOO-43Y
CCBUG: 486853
---
lib/decompressor.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/decompressor.cpp b/lib/decompressor.cpp
index 25051cd..8509e7c 100644
--- a/lib/decompressor.cpp
+++ b/lib/decompressor.cpp
@@ -57,7 +57,7 @@ class BitReader
{
public:
BitReader(const QByteArray& d) : pos(0), len(d.size() * 8), data(d) {
- data.append("\000\000\000\000"); //krazy:exclude=strings
+ data.append(4, '\0');
}
quint32 read() {
--
2.48.1