summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-03-12 12:32:52 +0000
committerMichael Stahl <Michael.Stahl@cib.de>2019-08-27 14:12:25 +0200
commit6c5874fb0e1c96aa27c4f37a4e633e308f8f9a57 (patch)
tree355e4fe8af9f5dd254707b7a179c1b0ae8133252
parentforcepoint #25 ensure null termination (diff)
downloadcore-6c5874fb0e1c96aa27c4f37a4e633e308f8f9a57.tar.gz
core-6c5874fb0e1c96aa27c4f37a4e633e308f8f9a57.zip
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>
-rw-r--r--sc/source/ui/inc/viewdata.hxx4
-rw-r--r--sc/source/ui/view/viewdata.cxx12
2 files changed, 8 insertions, 8 deletions
diff --git a/sc/source/ui/inc/viewdata.hxx b/sc/source/ui/inc/viewdata.hxx
index 75bcb41cece9..2ab9115894cf 100644
--- a/sc/source/ui/inc/viewdata.hxx
+++ b/sc/source/ui/inc/viewdata.hxx
@@ -39,9 +39,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 a13583067ee5..4e608e7363d7 100644
--- a/sc/source/ui/view/viewdata.cxx
+++ b/sc/source/ui/view/viewdata.cxx
@@ -190,13 +190,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)
{
@@ -220,8 +220,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)
{