summaryrefslogtreecommitdiff
path: root/filter
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2021-08-23 17:24:14 +0100
committerCaolán McNamara <caolanm@redhat.com>2021-08-24 09:33:18 +0200
commit253c8adddb04529185c74aef5e5278eb71d309ab (patch)
tree79647467274dcdac1a07b1650ae2f75f9fd09a77 /filter
parent39a11e3287febeb9dd56f43da6f6612afeb0f512 (diff)
ofz: cgm Integer-overflow
Change-Id: I1cb1d5612f2b0b8999fed0d6c203ab24eedd4fe8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120898 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'filter')
-rw-r--r--filter/source/graphicfilter/icgm/class4.cxx18
1 files changed, 12 insertions, 6 deletions
diff --git a/filter/source/graphicfilter/icgm/class4.cxx b/filter/source/graphicfilter/icgm/class4.cxx
index 04b8f7c6fb63..2129a0f96bcb 100644
--- a/filter/source/graphicfilter/icgm/class4.cxx
+++ b/filter/source/graphicfilter/icgm/class4.cxx
@@ -543,12 +543,18 @@ void CGM::ImplDoClass4()
if ( mbFigure )
{
- tools::Rectangle aBoundingBox(aCenter.X - aRadius.X, aCenter.Y - aRadius.X);
- aBoundingBox.SaturatingSetSize(Size(2 * aRadius.X, 2 * aRadius.X));
- tools::Polygon aPolygon( aBoundingBox,
- Point( static_cast<tools::Long>(vector[ 0 ]), static_cast<tools::Long>(vector[ 1 ]) ),
- Point( static_cast<tools::Long>(vector[ 2 ]), static_cast<tools::Long>(vector[ 3 ]) ), PolyStyle::Arc );
- mpOutAct->RegPolyLine( aPolygon );
+ double fLeft = aCenter.X - aRadius.X;
+ double fTop = aCenter.Y - aRadius.X;
+ bUseless = useless(fLeft) || useless(fTop);
+ if (!bUseless)
+ {
+ tools::Rectangle aBoundingBox(fLeft, fTop);
+ aBoundingBox.SaturatingSetSize(Size(2 * aRadius.X, 2 * aRadius.X));
+ tools::Polygon aPolygon( aBoundingBox,
+ Point( static_cast<tools::Long>(vector[ 0 ]), static_cast<tools::Long>(vector[ 1 ]) ),
+ Point( static_cast<tools::Long>(vector[ 2 ]), static_cast<tools::Long>(vector[ 3 ]) ), PolyStyle::Arc );
+ mpOutAct->RegPolyLine( aPolygon );
+ }
}
else
{