diff options
author | Nick Burch <nick@apache.org> | 2008-04-27 18:02:13 +0000 |
---|---|---|
committer | Nick Burch <nick@apache.org> | 2008-04-27 18:02:13 +0000 |
commit | 7bbd66c1471f2f4879db48c496e8c12f1f2e1ba3 (patch) | |
tree | 975b2b125e06ecc7d2412214ab29672bd648ac96 /src/java/org/apache/poi/ddf | |
parent | 908f4d236afed1106c426d1788207527a97604c4 (diff) | |
download | poi-7bbd66c1471f2f4879db48c496e8c12f1f2e1ba3.tar.gz poi-7bbd66c1471f2f4879db48c496e8c12f1f2e1ba3.zip |
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
Diffstat (limited to 'src/java/org/apache/poi/ddf')
-rw-r--r-- | src/java/org/apache/poi/ddf/EscherMetafileBlip.java | 7 |
1 files changed, 5 insertions, 2 deletions
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 |