diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2021-01-26 19:29:22 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-01-28 09:02:25 +0000 |
commit | d8f661838d09690d339d8e33eeb6388b1f060adf (patch) | |
tree | b04bee44d418081b2077ebf87b0ef44787f609c9 /src/gui | |
parent | 56db78a77519494a795d0139973c7776d56fffd3 (diff) |
Fix division by zero
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>
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/painting/qicc.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/gui/painting/qicc.cpp b/src/gui/painting/qicc.cpp index 1c4c50b7f8..5236f472a5 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]); |