summaryrefslogtreecommitdiff
path: root/filter
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2014-11-14 11:35:00 +0000
committerCaolán McNamara <caolanm@redhat.com>2014-11-14 12:02:51 +0000
commit8e6c22d74933c7157e083e97d56106b36a166559 (patch)
treea3656ec79c80773deebadbf85f5d116e66f1f426 /filter
parent642cf9af84ab6a33b0853753499bab4d96be8f7c (diff)
coverity#1209889 Untrusted loop bound
Change-Id: I63039ca0de1dc54b5aa9d048e5110c31bf930bdc
Diffstat (limited to 'filter')
-rw-r--r--filter/source/graphicfilter/icgm/class5.cxx12
1 files changed, 10 insertions, 2 deletions
diff --git a/filter/source/graphicfilter/icgm/class5.cxx b/filter/source/graphicfilter/icgm/class5.cxx
index a1a9bfb039ba..763971a9f064 100644
--- a/filter/source/graphicfilter/icgm/class5.cxx
+++ b/filter/source/graphicfilter/icgm/class5.cxx
@@ -461,10 +461,18 @@ void CGM::ImplDoClass5()
sal_uInt32 i, nColorFrom = 0;
sal_uInt32 nColorTo = 0xffffff;
- //FIXME, does this loop actually do anything?
+ const size_t nRemainingSize = mpEndValidSource - (mpSource + mnParaSize);
+ const size_t nMaxPossibleRecords = nRemainingSize/pElement->nRealSize;
+
+ if (nNumberOfStages > nMaxPossibleRecords)
+ {
+ mbStatus = false;
+ break;
+ }
+
for ( i = 0; i < nNumberOfStages; i++ )
{
- ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize ); // -Wall is this needed
+ ImplGetFloat(pElement->eRealPrecision, pElement->nRealSize);
}
for ( i = 0; i <= nNumberOfStages; i++ )