filter/source/graphicfilter/icgm/class4.cxx |   33 ++++++++++++++++++++++------
 sc/source/filter/lotus/op.cxx               |    2 -
 2 files changed, 27 insertions(+), 8 deletions(-)

New commits:
commit c93f941be682d767636110ab10da9a55833370f4
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Mon Aug 30 15:15:24 2021 +0100
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Mon Aug 30 21:38:57 2021 +0200

    ofz#37831 avoid Integer-overflow
    
    Change-Id: I95acce44623c6c5e48686a79314ffaf6ab402292
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121317
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/filter/source/graphicfilter/icgm/class4.cxx 
b/filter/source/graphicfilter/icgm/class4.cxx
index 7fdd13455f68..7561e2240576 100644
--- a/filter/source/graphicfilter/icgm/class4.cxx
+++ b/filter/source/graphicfilter/icgm/class4.cxx
@@ -422,13 +422,32 @@ void CGM::ImplDoClass4()
 
                     if ( mbFigure )
                     {
-                        tools::Rectangle aBoundingBox(aCenterPoint.X - 
fRadius, aCenterPoint.Y - fRadius);
-                        aBoundingBox.SaturatingSetSize(Size(2 * fRadius, 2 * 
fRadius));
-                        tools::Polygon aPolygon( aBoundingBox, Point( 
static_cast<tools::Long>(aStartingPoint.X), 
static_cast<tools::Long>(aStartingPoint.Y) ) ,Point( 
static_cast<tools::Long>(aEndingPoint.X), 
static_cast<tools::Long>(aEndingPoint.Y) ), PolyStyle::Arc );
-                        if ( nSwitch )
-                            mpOutAct->RegPolyLine( aPolygon, true );
-                        else
-                            mpOutAct->RegPolyLine( aPolygon );
+                        double fLeft = aCenterPoint.X - fRadius;
+                        double fTop = aCenterPoint.Y - fRadius;
+                        double fRight = fLeft + (2 * fRadius);
+                        double fBottom = fTop + (2 * fRadius);
+                        bUseless = useless(fLeft) || useless(fTop) || 
useless(fRight) || useless(fBottom);
+                        if (!bUseless)
+                        {
+                            double fWidth = fLeft + fRight;
+                            bUseless = !o3tl::convertsToAtLeast(fWidth, 
std::numeric_limits<tools::Long>::min()) ||
+                                       !o3tl::convertsToAtMost(fWidth, 
std::numeric_limits<tools::Long>::max());
+                        }
+                        if (!bUseless)
+                        {
+                            double fHeight = fTop + fBottom;
+                            bUseless = !o3tl::convertsToAtLeast(fHeight, 
std::numeric_limits<tools::Long>::min()) ||
+                                       !o3tl::convertsToAtMost(fHeight, 
std::numeric_limits<tools::Long>::max());
+                        }
+                        if (!bUseless)
+                        {
+                            tools::Rectangle aBoundingBox(fLeft, fTop, fRight, 
fBottom);
+                            tools::Polygon aPolygon( aBoundingBox, Point( 
static_cast<tools::Long>(aStartingPoint.X), 
static_cast<tools::Long>(aStartingPoint.Y) ) ,Point( 
static_cast<tools::Long>(aEndingPoint.X), 
static_cast<tools::Long>(aEndingPoint.Y) ), PolyStyle::Arc );
+                            if ( nSwitch )
+                                mpOutAct->RegPolyLine( aPolygon, true );
+                            else
+                                mpOutAct->RegPolyLine( aPolygon );
+                        }
                     }
                     else
                     {
commit 31d0b43edfc304b7d69adb49ab8e5892726ed0cb
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Mon Aug 30 17:07:23 2021 +0100
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Mon Aug 30 21:38:42 2021 +0200

    make this more readable
    
    Change-Id: I031054d3a6929c48b796ce527448d2c5a5099a8b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121319
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/sc/source/filter/lotus/op.cxx b/sc/source/filter/lotus/op.cxx
index b245e0f04987..4f9ed6e2679b 100644
--- a/sc/source/filter/lotus/op.cxx
+++ b/sc/source/filter/lotus/op.cxx
@@ -244,7 +244,7 @@ void OP_SymphNamedRange(LotusContext& rContext, SvStream& 
r, sal_uInt16 /*n*/)
 
     r.ReadUInt16( nColSt ).ReadUInt16( nRowSt ).ReadUInt16( nColEnd 
).ReadUInt16( nRowEnd ).ReadUChar( nType );
 
-    if (!(rContext.rDoc.ValidColRow( static_cast<SCCOL>(nColSt), nRowSt) && 
rContext.rDoc.ValidColRow( static_cast<SCCOL>(nColEnd), nRowEnd)))
+    if (!rContext.rDoc.ValidColRow(static_cast<SCCOL>(nColSt), nRowSt) || 
!rContext.rDoc.ValidColRow(static_cast<SCCOL>(nColEnd), nRowEnd))
         return;
 
     std::unique_ptr<LotusRange> pRange;

Reply via email to