From dddd0c3ad80b08e4e7775095e51995f360b5e336 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Mon, 18 May 2020 15:19:06 +0200 Subject: [PATCH] Add error message on unaligned profile inputs Pick-to: 5.15 Task-number: QTBUG-84267 Change-Id: I7ec2100455bd0178cdff0de2d24abbe6c19f812f Reviewed-by: Eirik Aavitsland --- src/gui/painting/qcolorspace.cpp | 3 +++ src/gui/painting/qicc.cpp | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/src/gui/painting/qcolorspace.cpp b/src/gui/painting/qcolorspace.cpp index 930e5aec87..43efdc1166 100644 --- a/src/gui/painting/qcolorspace.cpp +++ b/src/gui/painting/qcolorspace.cpp @@ -666,6 +666,9 @@ QByteArray QColorSpace::iccProfile() const If the ICC profile is not supported an invalid QColorSpace is returned where you can still read the original ICC profile using iccProfile(). + \note If the QByteArray data is created from external sources it should be + at least 4 byte aligned. + \sa iccProfile() */ QColorSpace QColorSpace::fromIccProfile(const QByteArray &iccProfile) diff --git a/src/gui/painting/qicc.cpp b/src/gui/painting/qicc.cpp index ca06e8763f..32d67ea76a 100644 --- a/src/gui/painting/qicc.cpp +++ b/src/gui/painting/qicc.cpp @@ -614,6 +614,11 @@ bool parseDesc(const QByteArray &data, const TagEntry &tagEntry, QString &descNa bool fromIccProfile(const QByteArray &data, QColorSpace *colorSpace) { + Q_ASSERT((reinterpret_cast(data.constData()) & 0x3) == 0); + if (reinterpret_cast(data.constData()) & 0x3) { + qCWarning(lcIcc) << "fromIccProfile: Unaligned profile data"; + return false; + } if (data.size() < qsizetype(sizeof(ICCProfileHeader))) { qCWarning(lcIcc) << "fromIccProfile: failed size sanity 1"; return false;