From 7bbd66c1471f2f4879db48c496e8c12f1f2e1ba3 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Sun, 27 Apr 2008 18:02:13 +0000 Subject: [PATCH] Fix from Trejkaz from bug #44857 - Avoid OOM on unknown escher records when EscherMetafileBlip is incorrect git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@651992 13f79535-47bb-0310-9956-ffa450edef68 --- build.xml | 2 ++ src/documentation/content/xdocs/changes.xml | 1 + src/documentation/content/xdocs/status.xml | 1 + .../apache/poi/ddf/EscherMetafileBlip.java | 7 +++-- .../poi/ddf/TestEscherContainerRecord.java | 28 +++++++++++++++++- .../org/apache/poi/ddf/data/Container.dat | Bin 0 -> 33627 bytes 6 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 src/testcases/org/apache/poi/ddf/data/Container.dat diff --git a/build.xml b/build.xml index cdcd7924e2..f6ecddc0cb 100644 --- a/build.xml +++ b/build.xml @@ -401,6 +401,8 @@ under the License. file="${main.src.test}/org/apache/poi/hpsf/data"/> + diff --git a/src/documentation/content/xdocs/changes.xml b/src/documentation/content/xdocs/changes.xml index 336ac06154..b0dab58f45 100644 --- a/src/documentation/content/xdocs/changes.xml +++ b/src/documentation/content/xdocs/changes.xml @@ -37,6 +37,7 @@ + 44857 - Avoid OOM on unknown escher records when EscherMetafileBlip is incorrect HSLF: Support for getting embedded sounds from slide show HSLF: Initial support for rendering slides into images HSLF: Support for getting OLE object data from slide show diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index c61f2b1db4..3a74e26f39 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,6 +34,7 @@ + 44857 - Avoid OOM on unknown escher records when EscherMetafileBlip is incorrect HSLF: Support for getting embedded sounds from slide show HSLF: Initial support for rendering slides into images HSLF: Support for getting OLE object data from slide show diff --git a/src/java/org/apache/poi/ddf/EscherMetafileBlip.java b/src/java/org/apache/poi/ddf/EscherMetafileBlip.java index f2dc1bb014..99faa61bc2 100644 --- a/src/java/org/apache/poi/ddf/EscherMetafileBlip.java +++ b/src/java/org/apache/poi/ddf/EscherMetafileBlip.java @@ -83,8 +83,11 @@ public class EscherMetafileBlip field_6_fCompression = data[pos]; pos++; field_7_fFilter = data[pos]; pos++; - raw_pictureData = new byte[field_5_cbSave]; - System.arraycopy( data, pos, raw_pictureData, 0, field_5_cbSave ); + // Bit of a snag - trusting field_5_cbSave results in inconsistent + // record size in some cases. So, just check the data left + int remainingBytes = bytesAfterHeader - 50; + raw_pictureData = new byte[remainingBytes]; + System.arraycopy( data, pos, raw_pictureData, 0, remainingBytes ); // 0 means DEFLATE compression // 0xFE means no compression diff --git a/src/testcases/org/apache/poi/ddf/TestEscherContainerRecord.java b/src/testcases/org/apache/poi/ddf/TestEscherContainerRecord.java index 7c139827b6..0f1fc9c733 100644 --- a/src/testcases/org/apache/poi/ddf/TestEscherContainerRecord.java +++ b/src/testcases/org/apache/poi/ddf/TestEscherContainerRecord.java @@ -18,13 +18,24 @@ package org.apache.poi.ddf; +import java.io.File; +import java.io.FileInputStream; + import junit.framework.TestCase; import org.apache.poi.util.HexRead; import org.apache.poi.util.HexDump; +import org.apache.poi.util.IOUtils; public class TestEscherContainerRecord extends TestCase { - public void testFillFields() throws Exception + private String ESCHER_DATA_PATH; + + protected void setUp() throws Exception { + super.setUp(); + ESCHER_DATA_PATH = System.getProperty("DDF.testdata.path"); + } + + public void testFillFields() throws Exception { EscherRecordFactory f = new DefaultEscherRecordFactory(); byte[] data = HexRead.readFromString( "0F 02 11 F1 00 00 00 00" ); @@ -137,4 +148,19 @@ public class TestEscherContainerRecord extends TestCase assertEquals(18, r.getRecordSize()); } + /** + * We were having problems with reading too much data on an UnknownEscherRecord, + * but hopefully we now read the correct size. + */ + public void testBug44857() throws Exception { + File f = new File(ESCHER_DATA_PATH, "Container.dat"); + assertTrue(f.exists()); + + FileInputStream finp = new FileInputStream(f); + byte[] data = IOUtils.toByteArray(finp); + + // This used to fail with an OutOfMemory + EscherContainerRecord record = new EscherContainerRecord(); + record.fillFields(data, 0, new DefaultEscherRecordFactory()); + } } diff --git a/src/testcases/org/apache/poi/ddf/data/Container.dat b/src/testcases/org/apache/poi/ddf/data/Container.dat new file mode 100644 index 0000000000000000000000000000000000000000..c1b5447771458049d805ebd5661112bbff89c728 GIT binary patch literal 33627 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 literal 0 HcmV?d00001 -- 2.39.5