summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2021-01-26 19:29:22 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-01-27 19:39:28 +0000
commitfada6a1cbd978ee81d76e937775e52a064a98362 (patch)
tree596b1a1221dccd1dff3c6fb949eb30fcc5269ceb
parent86af1842052bace1dcbbe79c621b210a5c0efc12 (diff)
Fix division by zerov6.0.1
Consider a zero we need to divide with illegal input. Fixes oss-fuzz 29347 Change-Id: I2aae1d765d2dd81c95d423038ef5cb878d4f8026 Reviewed-by: Robert Löhning <robert.loehning@qt.io> (cherry picked from commit 16b8d766abe86868597b30cec03152355ee1a91b) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/gui/painting/qicc.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/gui/painting/qicc.cpp b/src/gui/painting/qicc.cpp
index 149a67655a..bacf76997f 100644
--- a/src/gui/painting/qicc.cpp
+++ b/src/gui/painting/qicc.cpp
@@ -524,6 +524,8 @@ bool parseTRC(const QByteArray &data, const TagEntry &tagEntry, QColorTrc &gamma
return false;
std::array<quint32_be, 3> parameters =
qFromUnaligned<decltype(parameters)>(data.constData() + parametersOffset);
+ if (parameters[1] == 0)
+ return false;
float g = fromFixedS1516(parameters[0]);
float a = fromFixedS1516(parameters[1]);
float b = fromFixedS1516(parameters[2]);
@@ -537,6 +539,8 @@ bool parseTRC(const QByteArray &data, const TagEntry &tagEntry, QColorTrc &gamma
return false;
std::array<quint32_be, 4> parameters =
qFromUnaligned<decltype(parameters)>(data.constData() + parametersOffset);
+ if (parameters[1] == 0)
+ return false;
float g = fromFixedS1516(parameters[0]);
float a = fromFixedS1516(parameters[1]);
float b = fromFixedS1516(parameters[2]);