From 1ea379e0035a325b05f91da805425ff9f871eec6 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Wed, 5 Dec 2012 13:16:32 +0000 Subject: Resolves: fdo#57532 restrict page sanity check to non-storage chunks Change-Id: I47c24131e95b9a8a691dbff4710869ba91df8306 (cherry picked from commit 4a1044229afd6b52ca10e5c55f1957b153a8c6ea) Reviewed-on: https://gerrit.libreoffice.org/1246 Reviewed-by: Michael Meeks Tested-by: Michael Meeks --- sot/qa/cppunit/data/pass/fdo57532-1.compound | Bin 0 -> 25088 bytes sot/source/sdstor/stgelem.cxx | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 sot/qa/cppunit/data/pass/fdo57532-1.compound diff --git a/sot/qa/cppunit/data/pass/fdo57532-1.compound b/sot/qa/cppunit/data/pass/fdo57532-1.compound new file mode 100644 index 000000000000..70068fe10c89 Binary files /dev/null and b/sot/qa/cppunit/data/pass/fdo57532-1.compound differ diff --git a/sot/source/sdstor/stgelem.cxx b/sot/source/sdstor/stgelem.cxx index e0d738af5738..2ceea4dd6f62 100644 --- a/sot/source/sdstor/stgelem.cxx +++ b/sot/source/sdstor/stgelem.cxx @@ -412,7 +412,7 @@ sal_Bool StgEntry::Load( const void* pFrom, sal_uInt32 nBufSize ) if (n > nMaxLegalStr) return sal_False; - if ((nSize < 0 && cType != STG_STORAGE) || (nPage1 < 0 && !isKnownSpecial(nPage1))) + if ((cType != STG_STORAGE) && ((nSize < 0) || (nPage1 < 0 && !isKnownSpecial(nPage1)))) { // the size makes no sense for the substorage // TODO/LATER: actually the size should be an unsigned value, but in this case it would mean a stream of more than 2Gb -- cgit v1.2.3