From: Dominik Stadler Date: Mon, 11 May 2015 20:00:42 +0000 (+0000) Subject: Provide better exception if we would access out of bounds in arraycopy for Escher... X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=eb58b83090715880c5d1674a8d6bf220b165a6ad;p=poi.git Provide better exception if we would access out of bounds in arraycopy for Escher properties git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678812 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/java/org/apache/poi/ddf/EscherPropertyFactory.java b/src/java/org/apache/poi/ddf/EscherPropertyFactory.java index 3dcce79b86..3e653f5b8d 100644 --- a/src/java/org/apache/poi/ddf/EscherPropertyFactory.java +++ b/src/java/org/apache/poi/ddf/EscherPropertyFactory.java @@ -82,7 +82,14 @@ public final class EscherPropertyFactory { pos += ((EscherArrayProperty)p).setArrayData(data, pos); } else { byte[] complexData = ((EscherComplexProperty)p).getComplexData(); - System.arraycopy(data, pos, complexData, 0, complexData.length); + + int leftover = data.length-pos; + if(leftover < complexData.length){ + throw new IllegalStateException("Could not read complex escher property, lenght was " + complexData.length + ", but had only " + + leftover + " bytes left"); + } + + System.arraycopy(data, pos, complexData, 0, complexData.length); pos += complexData.length; } }