Tighten CMYK ICC parsing

Must include a CLUT

Change-Id: I790e0c86d4cdbcfbcfda9e35c7689090f44711a6
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
bb10
Allan Sandfeld Jensen 2024-04-23 10:39:43 +02:00
parent 60432b02f1
commit e7362764d4
1 changed files with 7 additions and 0 deletions

View File

@ -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<const uint8_t *>(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<const uint8_t *>(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) {