diff options
author | Caolán McNamara <caolanm@redhat.com> | 2020-01-29 17:17:24 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2020-01-29 20:24:02 +0100 |
commit | f0c2e0d27ccdeaefb00b63e7462e1c25e18f73af (patch) | |
tree | 1d7977a81ca95f0389292403cfbdaedf2ff632c3 /svl/source | |
parent | 2766b5f8c821af398f3f6d0cab28019b85894f81 (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/source')
-rw-r--r-- | svl/source/items/macitem.cxx | 15 |
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() |