summaryrefslogtreecommitdiff
path: root/filter
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2017-11-04 21:06:21 +0000
committerCaolán McNamara <caolanm@redhat.com>2017-11-05 17:55:02 +0100
commit92ca905bc73a829106975dac0d1c53111667ca2a (patch)
tree6191e31b9863c0b9f1ebc85da4112fb57c42210b /filter
parentdf7bfbb7e401998a9ba247eb939af1fb3245626b (diff)
ofz#4058 Integer-overflow
Change-Id: I76050f392f04cff54e52eb913ceb451bc5973a72 Reviewed-on: https://gerrit.libreoffice.org/44323 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'filter')
-rw-r--r--filter/source/graphicfilter/ios2met/ios2met.cxx18
1 files changed, 10 insertions, 8 deletions
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),