aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/org/apache/poi/ddf
diff options
context:
space:
mode:
authorNick Burch <nick@apache.org>2008-04-27 18:02:13 +0000
committerNick Burch <nick@apache.org>2008-04-27 18:02:13 +0000
commit7bbd66c1471f2f4879db48c496e8c12f1f2e1ba3 (patch)
tree975b2b125e06ecc7d2412214ab29672bd648ac96 /src/java/org/apache/poi/ddf
parent908f4d236afed1106c426d1788207527a97604c4 (diff)
downloadpoi-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.java7
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