[Libreoffice-commits] core.git: emfio/source

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Wed Jun 2 10:09:11 UTC 2021


 emfio/source/reader/emfreader.cxx |   17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

New commits:
commit de82849f2475b7626df19c0d29758d95388af1b2
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Wed Jun 2 09:00:05 2021 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Wed Jun 2 12:08:31 2021 +0200

    ofz#34847 Integer-overflow
    
    Change-Id: I45e27efbceff76456f6c22a256a5fce1310272c5
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116567
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/emfio/source/reader/emfreader.cxx b/emfio/source/reader/emfreader.cxx
index 106b9a52564f..b0fafab81604 100644
--- a/emfio/source/reader/emfreader.cxx
+++ b/emfio/source/reader/emfreader.cxx
@@ -1335,11 +1335,18 @@ namespace emfio
                     {
                         mpInputStream->ReadInt32( nX32 ).ReadInt32( nY32 ).ReadInt32( nx32 ).ReadInt32( ny32 );
                         SAL_INFO("emfio", "\t\t Rectangle, left: " << nX32 << ", top: " << nY32 << ", right: " << nx32 << ", bottom: " << ny32);
-                        tools::Long dw = (nx32 - nX32) / 2;
-                        tools::Long dh = (ny32 - nY32) / 2;
-                        Point aCenter( nX32 + dw, nY32 + dh );
-                        tools::Polygon aPoly( aCenter, dw, dh );
-                        DrawPolygon( aPoly, mbRecordPath );
+
+                        sal_Int32 w(0), h(0);
+                        if (o3tl::checked_sub(nx32, nX32, w) || o3tl::checked_sub(ny32, nY32, h))
+                            SAL_WARN("emfio", "broken ellipse");
+                        else
+                        {
+                            tools::Long dw = w / 2;
+                            tools::Long dh = h / 2;
+                            Point aCenter( nX32 + dw, nY32 + dh );
+                            tools::Polygon aPoly( aCenter, dw, dh );
+                            DrawPolygon( aPoly, mbRecordPath );
+                        }
                     }
                     break;
 


More information about the Libreoffice-commits mailing list