summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Luth <justin_luth@sil.org>2018-04-23 09:27:00 +0300
committerCaolán McNamara <caolanm@redhat.com>2018-04-26 16:15:09 +0200
commit9b55701b88c42cac491587072f1f09522207de77 (patch)
tree414d4fd021c2ecb3d07a2f36684285a1f2e8307d
parent980e19ddddaf46dae68c800d55582e8f6b2c7fdd (diff)
tdf#117129 ww8import: prevent divide-by-zero
Before commit ffc3358515799057e72379b76a1165c6ea5a9bd1 for tdf#75539, the divisor was hard-coded at 1000. The preceeding code also notes that an undefined relativeWidth is forced to 1000. So, on an invalid divisor, revert to previous behaviour. Change-Id: I40210194eec39682d9ab3ce68268d343af16e2b1 Reviewed-on: https://gerrit.libreoffice.org/53329 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--sw/qa/core/data/ww8/pass/tdf117129_dxagoal0.docbin0 -> 53248 bytes
-rw-r--r--sw/source/filter/ww8/ww8graf2.cxx3
2 files changed, 2 insertions, 1 deletions
diff --git a/sw/qa/core/data/ww8/pass/tdf117129_dxagoal0.doc b/sw/qa/core/data/ww8/pass/tdf117129_dxagoal0.doc
new file mode 100644
index 000000000000..9fca8ef048ae
--- /dev/null
+++ b/sw/qa/core/data/ww8/pass/tdf117129_dxagoal0.doc
Binary files differ
diff --git a/sw/source/filter/ww8/ww8graf2.cxx b/sw/source/filter/ww8/ww8graf2.cxx
index fde01e6ad296..4035d583c1ba 100644
--- a/sw/source/filter/ww8/ww8graf2.cxx
+++ b/sw/source/filter/ww8/ww8graf2.cxx
@@ -579,10 +579,11 @@ SwFrameFormat* SwWW8ImplReader::ImportGraf(SdrTextObj const * pTextObj,
relativeWidth = pRecord->isHorizontalRule ? 1000 : 0;
if( relativeWidth != 0 )
{
+ const sal_Int16 nScale = aPic.dxaGoal ? aPic.dxaGoal : 1000;
aPic.mx = msword_cast<sal_uInt16>(
m_aSectionManager.GetPageWidth() -
m_aSectionManager.GetPageRight() -
- m_aSectionManager.GetPageLeft()) * relativeWidth / aPic.dxaGoal;
+ m_aSectionManager.GetPageLeft()) * relativeWidth / nScale;
aPD = WW8PicDesc( aPic );
// This SetSnapRect() call adjusts the size of the
// object itself, no idea why it's this call (or even