diff --git a/src/gui/painting/qicc.cpp b/src/gui/painting/qicc.cpp index 77f1a7aa08..dcebdfd1b0 100644 --- a/src/gui/painting/qicc.cpp +++ b/src/gui/painting/qicc.cpp @@ -672,6 +672,10 @@ static bool parseLutData(const QByteArray &data, const TagEntry &tagEntry, QColo qCWarning(lcIcc) << "Undersized lut8/lut16 tag"; return false; } + if (qsizetype(tagEntry.size) > data.size()) { + qCWarning(lcIcc) << "Truncated lut8/lut16 tag"; + return false; + } using S = std::conditional_t, uint8_t, uint16_t>; const T lut = qFromUnaligned(data.constData() + tagEntry.offset); int inputTableEntries, outputTableEntries, precision;