summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2017-04-04 19:13:12 +0100
committerAndras Timar <andras.timar@collabora.com>2017-04-07 07:53:06 +0200
commit0e3c6fc907dada12d677de8b730280cebcc46a4d (patch)
tree1681cfd4dfffa31edba411e428e46cd08140b634
parent3f4eb2c3ad8ad8894751320aace518ca8b1100f0 (diff)
ofz: check olst sprm for valid ANLD payload len
Change-Id: Ic1b6681a3f48ef0fe3f52eda9db8b7bc003ded55 (cherry picked from commit 98151bf95bda8d647310bdba6936dc6b388b05de) Reviewed-on: https://gerrit.libreoffice.org/36098 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Michael Stahl <mstahl@redhat.com> (cherry picked from commit 14028af4d978f126779e641a9605c6d4d864b3b6)
-rw-r--r--sw/source/filter/ww8/ww8par2.cxx8
1 files changed, 8 insertions, 0 deletions
diff --git a/sw/source/filter/ww8/ww8par2.cxx b/sw/source/filter/ww8/ww8par2.cxx
index 48417eeb38a6..f93b97a01fb2 100644
--- a/sw/source/filter/ww8/ww8par2.cxx
+++ b/sw/source/filter/ww8/ww8par2.cxx
@@ -952,6 +952,14 @@ void SwWW8ImplReader::Read_OLST( sal_uInt16, const sal_uInt8* pData, short nLen
m_pNumOlst = nullptr;
return;
}
+
+ if (static_cast<size_t>(nLen) < sizeof(WW8_OLST))
+ {
+ SAL_WARN("sw.ww8", "WW8_OLST property is " << nLen << " long, needs to be at least " << sizeof(WW8_OLST));
+ m_pNumOlst = nullptr;
+ return;
+ }
+
m_pNumOlst = new WW8_OLST;
if( nLen < sal::static_int_cast< sal_Int32 >(sizeof( WW8_OLST )) ) // fill if to short
memset( m_pNumOlst, 0, sizeof( *m_pNumOlst ) );