From bb66367bc82bd656150792da6eef1076f0cf69b5 Mon Sep 17 00:00:00 2001 From: Mirco Miranda Date: Wed, 11 Jan 2023 22:56:38 +0000 Subject: [PATCH] PCX: Fix reading of the extended palette The VGA palette starts 769 bytes before the end of the file. There may be PADs between the end of the image and the start of the palette. BUG: 463951 (cherry picked from commit 14742cb502272b8029103ce10148dfe5d0317e80) --- autotests/read/pcx/ccbug_463951.pcx | Bin 0 -> 22361 bytes autotests/read/pcx/ccbug_463951.png | Bin 0 -> 8670 bytes src/imageformats/pcx.cpp | 17 ++++++++++++++--- 3 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 autotests/read/pcx/ccbug_463951.pcx create mode 100644 autotests/read/pcx/ccbug_463951.png diff --git a/autotests/read/pcx/ccbug_463951.pcx b/autotests/read/pcx/ccbug_463951.pcx new file mode 100644 index 0000000000000000000000000000000000000000..193df68a88cfd548e00970450f6567918a9eb070 GIT binary patch literal 22361 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 Lb6{Wqmoxtd8!itz literal 0 HcmV?d00001 diff --git a/autotests/read/pcx/ccbug_463951.png b/autotests/read/pcx/ccbug_463951.png new file mode 100644 index 0000000000000000000000000000000000000000..7067ee2d0b2a3aff33f2468c8105df32c94bf251 GIT binary patch literal 8670 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 t@Ji-uL8AT_wbB1Pf&2evOKutaAExyt#> flag; - // qDebug() << "Palette Flag: " << flag; + // by specification, the extended palette starts at file.size() - 769 + quint8 flag = 0; + if (auto device = s.device()) { + if (device->isSequential()) { + while (flag != 12 && s.status() == QDataStream::Ok) { + s >> flag; + } + } + else { + device->seek(device->size() - 769); + s >> flag; + } + } + // qDebug() << "Palette Flag: " << flag; if (flag == 12 && (header.Version == 5 || header.Version == 2)) { // Read the palette quint8 r;