diff options
author | Caolán McNamara <caolanm@redhat.com> | 2021-08-23 17:24:14 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2021-08-24 09:33:18 +0200 |
commit | 253c8adddb04529185c74aef5e5278eb71d309ab (patch) | |
tree | 79647467274dcdac1a07b1650ae2f75f9fd09a77 /filter | |
parent | 39a11e3287febeb9dd56f43da6f6612afeb0f512 (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.cxx | 18 |
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 { |