diff options
author | Caolán McNamara <caolanm@redhat.com> | 2017-09-18 21:17:32 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2017-09-19 00:24:43 +0200 |
commit | fc5513f40acc56410651a147e4b03dc614ea6183 (patch) | |
tree | ce465619ed5bf71492088281e77312acaffdd60c /sot | |
parent | e38d2f05cb16e981381434a940aa5c89e910cc78 (diff) |
tdf#112399 ignore size of unknown/unused ole2 entries
Change-Id: I9908453c1a11997141f7d6c4e1dccff53984321c
Reviewed-on: https://gerrit.libreoffice.org/42436
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 'sot')
-rw-r--r-- | sot/qa/cppunit/data/pass/fdo41642-2.compound (renamed from sot/qa/cppunit/data/fail/fdo41642-2.compound) | bin | 35335 -> 35335 bytes | |||
-rw-r--r-- | sot/qa/cppunit/data/pass/tdf112399-1.compound | bin | 0 -> 103427 bytes | |||
-rw-r--r-- | sot/source/sdstor/stgelem.cxx | 12 |
3 files changed, 12 insertions, 0 deletions
diff --git a/sot/qa/cppunit/data/fail/fdo41642-2.compound b/sot/qa/cppunit/data/pass/fdo41642-2.compound Binary files differindex b1ae6dd63046..b1ae6dd63046 100644 --- a/sot/qa/cppunit/data/fail/fdo41642-2.compound +++ b/sot/qa/cppunit/data/pass/fdo41642-2.compound diff --git a/sot/qa/cppunit/data/pass/tdf112399-1.compound b/sot/qa/cppunit/data/pass/tdf112399-1.compound Binary files differnew file mode 100644 index 000000000000..d3628def0c01 --- /dev/null +++ b/sot/qa/cppunit/data/pass/tdf112399-1.compound diff --git a/sot/source/sdstor/stgelem.cxx b/sot/source/sdstor/stgelem.cxx index 4e18d0e1b4d0..a178ff45f603 100644 --- a/sot/source/sdstor/stgelem.cxx +++ b/sot/source/sdstor/stgelem.cxx @@ -424,6 +424,18 @@ bool StgEntry::Load(const void* pFrom, sal_uInt32 nBufSize, sal_uInt64 nUnderlyi //bad pageid return false; } + if (m_cType == STG_EMPTY) + { + /* + tdf#112399 opens fine in MSOffice 2013 despite a massive m_nSize field + + Free (unused) directory entries are marked with Object Type 0x0 + (unknown or unallocated). The entire directory entry must consist of + all zeroes except for the child, right sibling, and left sibling + pointers, which must be initialized to NOSTREAM (0xFFFFFFFF). + */ + m_nSize = 0; + } if (m_nSize < 0) { // the size makes no sense for the substorage |