summaryrefslogtreecommitdiff
path: root/filter
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2017-10-24 11:47:27 +0100
committerCaolán McNamara <caolanm@redhat.com>2017-10-25 09:54:35 +0200
commit08deeace490acc5b84b97b92e5960f6b6a920e53 (patch)
tree666675179794c54599970f915eb6335766f6fde4 /filter
parent9cfb27ae6cb94f0a853ff70e9ad9f3109d305a94 (diff)
ofz#3755 Integer-overflow
Change-Id: If21e45ce711d483cdd27e96877ee7f3ca35c2f14 Reviewed-on: https://gerrit.libreoffice.org/43753 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.cxx10
1 files changed, 7 insertions, 3 deletions
diff --git a/filter/source/graphicfilter/ios2met/ios2met.cxx b/filter/source/graphicfilter/ios2met/ios2met.cxx
index 369de5eca38a..ee0d2d7a885f 100644
--- a/filter/source/graphicfilter/ios2met/ios2met.cxx
+++ b/filter/source/graphicfilter/ios2met/ios2met.cxx
@@ -2048,8 +2048,12 @@ void OS2METReader::ReadOrder(sal_uInt16 nOrderID, sal_uInt16 nOrderLen)
case GOrdSChCel: {
sal_uInt8 nbyte;
sal_uInt16 nLen=nOrderLen;
- aAttr.aChrCellSize.Width()=ReadCoord(bCoord32);
- aAttr.aChrCellSize.Height()=ReadCoord(bCoord32);
+ auto nWidth = ReadCoord(bCoord32);
+ auto nHeight = ReadCoord(bCoord32);
+ if (nWidth < 0 || nHeight < 0)
+ aAttr.aChrCellSize = aDefAttr.aChrCellSize;
+ else
+ aAttr.aChrCellSize = Size(nWidth, nHeight);
if (bCoord32) nLen-=8; else nLen-=4;
if (nLen>=4) {
pOS2MET->SeekRel(4); nLen-=4;
@@ -2057,7 +2061,7 @@ void OS2METReader::ReadOrder(sal_uInt16 nOrderID, sal_uInt16 nOrderLen)
if (nLen>=2) {
pOS2MET->ReadUChar( nbyte );
if ((nbyte&0x80)==0 && aAttr.aChrCellSize==Size(0,0))
- aAttr.aChrCellSize=aDefAttr.aChrCellSize;
+ aAttr.aChrCellSize = aDefAttr.aChrCellSize;
}
break;
}