diff options
author | Caolán McNamara <caolanm@redhat.com> | 2018-03-12 12:32:52 +0000 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2018-04-07 17:43:44 +0200 |
commit | f537fa29feebffb1b4138b6dc57d21f2c6a81357 (patch) | |
tree | 46567f93c328cbddb71b49cc8db78c8071fc7013 /sc | |
parent | 7edcaf4ebeb759bd5a5a1a9c8da727cd70dc1839 (diff) |
forcepoint #26 check input against max valid enum values
Change-Id: Ide72884c77904ae9495b5189cde086e43923e4bd
Reviewed-on: https://gerrit.libreoffice.org/51138
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
(cherry picked from commit 05315e34c354b84409aa5e29ce9b8ce494570b52)
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/ui/inc/viewdata.hxx | 4 | ||||
-rw-r--r-- | sc/source/ui/view/viewdata.cxx | 12 |
2 files changed, 8 insertions, 8 deletions
diff --git a/sc/source/ui/inc/viewdata.hxx b/sc/source/ui/inc/viewdata.hxx index 6fc2d748a670..9a3e38671bec 100644 --- a/sc/source/ui/inc/viewdata.hxx +++ b/sc/source/ui/inc/viewdata.hxx @@ -40,9 +40,9 @@ enum class ScFillMode MATRIX = 4, }; -enum ScSplitMode { SC_SPLIT_NONE = 0, SC_SPLIT_NORMAL, SC_SPLIT_FIX }; +enum ScSplitMode { SC_SPLIT_NONE = 0, SC_SPLIT_NORMAL, SC_SPLIT_FIX, SC_SPLIT_MODE_MAX_ENUM = SC_SPLIT_FIX }; -enum ScSplitPos { SC_SPLIT_TOPLEFT, SC_SPLIT_TOPRIGHT, SC_SPLIT_BOTTOMLEFT, SC_SPLIT_BOTTOMRIGHT }; +enum ScSplitPos { SC_SPLIT_TOPLEFT, SC_SPLIT_TOPRIGHT, SC_SPLIT_BOTTOMLEFT, SC_SPLIT_BOTTOMRIGHT, SC_SPLIT_POS_MAX_ENUM = SC_SPLIT_BOTTOMRIGHT }; enum ScHSplitPos { SC_SPLIT_LEFT, SC_SPLIT_RIGHT }; enum ScVSplitPos { SC_SPLIT_TOP, SC_SPLIT_BOTTOM }; diff --git a/sc/source/ui/view/viewdata.cxx b/sc/source/ui/view/viewdata.cxx index a40413c3d1a5..85ffdce151c6 100644 --- a/sc/source/ui/view/viewdata.cxx +++ b/sc/source/ui/view/viewdata.cxx @@ -370,13 +370,13 @@ void ScViewDataTable::ReadUserDataSequence(const uno::Sequence <beans::PropertyV } else if (sName == SC_HORIZONTALSPLITMODE) { - aSettings[i].Value >>= nTemp16; - eHSplitMode = static_cast<ScSplitMode>(nTemp16); + if ((aSettings[i].Value >>= nTemp16) && nTemp16 <= ScSplitMode::SC_SPLIT_MODE_MAX_ENUM) + eHSplitMode = static_cast<ScSplitMode>(nTemp16); } else if (sName == SC_VERTICALSPLITMODE) { - aSettings[i].Value >>= nTemp16; - eVSplitMode = static_cast<ScSplitMode>(nTemp16); + if ((aSettings[i].Value >>= nTemp16) && nTemp16 <= ScSplitMode::SC_SPLIT_MODE_MAX_ENUM) + eVSplitMode = static_cast<ScSplitMode>(nTemp16); } else if (sName == SC_HORIZONTALSPLITPOSITION) { @@ -400,8 +400,8 @@ void ScViewDataTable::ReadUserDataSequence(const uno::Sequence <beans::PropertyV } else if (sName == SC_ACTIVESPLITRANGE) { - aSettings[i].Value >>= nTemp16; - eWhichActive = static_cast<ScSplitPos>(nTemp16); + if ((aSettings[i].Value >>= nTemp16) && nTemp16 <= ScSplitPos::SC_SPLIT_POS_MAX_ENUM) + eWhichActive = static_cast<ScSplitPos>(nTemp16); } else if (sName == SC_POSITIONLEFT) { |