summaryrefslogtreecommitdiff
path: root/svl
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2020-01-29 17:17:24 +0000
committerCaolán McNamara <caolanm@redhat.com>2020-01-29 20:24:02 +0100
commitf0c2e0d27ccdeaefb00b63e7462e1c25e18f73af (patch)
tree1d7977a81ca95f0389292403cfbdaedf2ff632c3 /svl
parent2766b5f8c821af398f3f6d0cab28019b85894f81 (diff)
cid#1458020 Untrusted loop bound
cid#1458018 Untrusted loop bound cid#1242844 Untrusted loop bound Change-Id: I9062240290708f4b51b0ce42a30897b50d1a2677 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87702 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'svl')
-rw-r--r--svl/source/items/macitem.cxx15
1 files changed, 8 insertions, 7 deletions
diff --git a/svl/source/items/macitem.cxx b/svl/source/items/macitem.cxx
index 64a22aa0039c..b0750212e3dc 100644
--- a/svl/source/items/macitem.cxx
+++ b/svl/source/items/macitem.cxx
@@ -86,28 +86,30 @@ void SvxMacroTableDtor::Read( SvStream& rStrm )
sal_uInt16 nVersion;
rStrm.ReadUInt16( nVersion );
- short nMacro(0);
- rStrm.ReadInt16(nMacro);
- if (nMacro < 0)
+ short nReadMacro(0);
+ rStrm.ReadInt16(nReadMacro);
+ if (nReadMacro < 0)
{
- SAL_WARN("editeng", "Parsing error: negative value " << nMacro);
+ SAL_WARN("editeng", "Parsing error: negative value " << nReadMacro);
return;
}
+ auto nMacro = o3tl::make_unsigned(nReadMacro);
+
const size_t nMinStringSize = rStrm.GetStreamCharSet() == RTL_TEXTENCODING_UNICODE ? 4 : 2;
size_t nMinRecordSize = 2 + 2*nMinStringSize;
if( SVX_MACROTBL_VERSION40 <= nVersion )
nMinRecordSize+=2;
const size_t nMaxRecords = rStrm.remainingSize() / nMinRecordSize;
- if (o3tl::make_unsigned(nMacro) > nMaxRecords)
+ if (nMacro > nMaxRecords)
{
SAL_WARN("editeng", "Parsing error: " << nMaxRecords <<
" max possible entries, but " << nMacro<< " claimed, truncating");
nMacro = nMaxRecords;
}
- for (short i = 0; i < nMacro; ++i)
+ for (decltype(nMacro) i = 0; i < nMacro; ++i)
{
sal_uInt16 nCurKey, eType = STARBASIC;
OUString aLibName, aMacName;
@@ -122,7 +124,6 @@ void SvxMacroTableDtor::Read( SvStream& rStrm )
}
}
-
SvStream& SvxMacroTableDtor::Write( SvStream& rStream ) const
{
sal_uInt16 nVersion = SOFFICE_FILEFORMAT_31 == rStream.GetVersion()