From e7362764d4931f255d2377462df8ac7a0d4e7c84 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Tue, 23 Apr 2024 10:39:43 +0200 Subject: [PATCH] Tighten CMYK ICC parsing Must include a CLUT Change-Id: I790e0c86d4cdbcfbcfda9e35c7689090f44711a6 Reviewed-by: Giuseppe D'Angelo --- src/gui/painting/qicc.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/gui/painting/qicc.cpp b/src/gui/painting/qicc.cpp index 59f941b017..c01fa433ea 100644 --- a/src/gui/painting/qicc.cpp +++ b/src/gui/painting/qicc.cpp @@ -778,6 +778,10 @@ static bool parseLutData(const QByteArray &data, const TagEntry &tagEntry, QColo qCWarning(lcIcc) << "Undersized lut8/lut16 tag, no room for tables"; return false; } + if (colorSpacePrivate->colorModel == QColorSpace::ColorModel::Cmyk && clutTableSize == 0) { + qCWarning(lcIcc) << "Cmyk conversion must have a CLUT"; + return false; + } const uint8_t *tableData = reinterpret_cast(data.constData() + tagEntry.offset + sizeof(T)); @@ -997,6 +1001,9 @@ static bool parseMabData(const QByteArray &data, const TagEntry &tagEntry, QColo const uint8_t *clutTable = reinterpret_cast(data.constData() + tagEntry.offset + mab.clutOffset + 20); parseCLUT(clutTable, (1.f/255.f), &clutElement, mab.outputChannels); } + } else if (colorSpacePrivate->colorModel == QColorSpace::ColorModel::Cmyk) { + qCWarning(lcIcc) << "Cmyk conversion must have a CLUT"; + return false; } if (isAb) {