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

Caolán McNamara caolanm at redhat.com
Sun Nov 5 16:55:31 UTC 2017


 filter/source/graphicfilter/ios2met/ios2met.cxx |   18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

New commits:
commit 92ca905bc73a829106975dac0d1c53111667ca2a
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sat Nov 4 21:06:21 2017 +0000

    ofz#4058 Integer-overflow
    
    Change-Id: I76050f392f04cff54e52eb913ceb451bc5973a72
    Reviewed-on: https://gerrit.libreoffice.org/44323
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/filter/source/graphicfilter/ios2met/ios2met.cxx b/filter/source/graphicfilter/ios2met/ios2met.cxx
index 2311539f7ae9..f861ce1c7c35 100644
--- a/filter/source/graphicfilter/ios2met/ios2met.cxx
+++ b/filter/source/graphicfilter/ios2met/ios2met.cxx
@@ -1110,7 +1110,6 @@ void OS2METReader::ReadFullArc(bool bGivenPos, sal_uInt16 nOrderSize)
 {
     Point aCenter;
     tools::Rectangle aRect;
-    sal_uInt32 nMul; sal_uInt16 nMulS;
 
     if (bGivenPos) {
         aCenter=ReadPoint();
@@ -1120,8 +1119,11 @@ void OS2METReader::ReadFullArc(bool bGivenPos, sal_uInt16 nOrderSize)
 
     sal_Int32 nP = aAttr.nArcP;
     sal_Int32 nQ = aAttr.nArcQ;
-    if (nP<0) nP=-nP;
-    if (nQ<0) nQ=-nQ;
+    if (nP < 0)
+        nP = o3tl::saturating_toggle_sign(nP);
+    if (nQ < 0)
+        nQ = o3tl::saturating_toggle_sign(nQ);
+    sal_uInt32 nMul(0); sal_uInt16 nMulS(0);
     if (nOrderSize>=4) pOS2MET->ReadUInt32( nMul );
     else { pOS2MET->ReadUInt16( nMulS ); nMul=((sal_uInt32)nMulS)<<8; }
     if (nMul!=0x00010000) {
@@ -1153,9 +1155,7 @@ void OS2METReader::ReadFullArc(bool bGivenPos, sal_uInt16 nOrderSize)
 void OS2METReader::ReadPartialArc(bool bGivenPos, sal_uInt16 nOrderSize)
 {
     Point aP0, aCenter,aPStart,aPEnd;
-    sal_Int32 nP,nQ,nStart, nSweep;
     tools::Rectangle aRect;
-    double fStart, fEnd;
 
     if (bGivenPos) {
         aP0=ReadPoint();
@@ -1164,7 +1164,8 @@ void OS2METReader::ReadPartialArc(bool bGivenPos, sal_uInt16 nOrderSize)
     else aP0=aAttr.aCurPos;
     aCenter=ReadPoint();
 
-    nP=aAttr.nArcP; nQ=aAttr.nArcQ;
+    sal_Int32 nP = aAttr.nArcP;
+    sal_Int32 nQ = aAttr.nArcQ;
     if (nP < 0)
         nP = o3tl::saturating_toggle_sign(nP);
     if (nQ < 0)
@@ -1177,9 +1178,10 @@ void OS2METReader::ReadPartialArc(bool bGivenPos, sal_uInt16 nOrderSize)
         nQ=(nQ*nMul)>>16;
     }
 
+    sal_Int32 nStart(0), nSweep(0);
     pOS2MET->ReadInt32( nStart ).ReadInt32( nSweep );
-    fStart=((double)nStart)/65536.0/180.0*3.14159265359;
-    fEnd=fStart+((double)nSweep)/65536.0/180.0*3.14159265359;
+    double fStart = ((double)nStart)/65536.0/180.0*3.14159265359;
+    double fEnd = fStart+((double)nSweep)/65536.0/180.0*3.14159265359;
     aPStart=Point(aCenter.X()+(sal_Int32)( cos(fStart)*nP),
                   aCenter.Y()+(sal_Int32)(-sin(fStart)*nQ));
     aPEnd=  Point(aCenter.X()+(sal_Int32)( cos(fEnd)*nP),


More information about the Libreoffice-commits mailing list