From bf3550b406b8888a74b352a812ce63d88721a971 Mon Sep 17 00:00:00 2001 From: Sergey Vladimirov Date: Sat, 29 Oct 2011 22:34:09 +0000 Subject: [PATCH] fix 52032 - HWPF - ArrayIndexOutofBoundsException with no stack trace (broken after revision 1178063) git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1195060 13f79535-47bb-0310-9956-ffa450edef68 --- src/documentation/content/xdocs/status.xml | 1 + .../poi/hwpf/model/ListFormatOverrideLevel.java | 1 + .../org/apache/poi/hwpf/usermodel/TestBugs.java | 11 +++++++++++ test-data/document/Bug52032.doc | Bin 0 -> 91136 bytes 4 files changed, 13 insertions(+) create mode 100644 test-data/document/Bug52032.doc diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index aa8117feeb..bd1d4d8926 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,6 +34,7 @@ + 52032 - HWPF - ArrayIndexOutofBoundsException with no stack trace (broken after revision 1178063) support for converting pptx files into images with a PPTX2PNG tool 52050 - Support for the Excel RATE function 51566 - HSLF fix for finishing parsing the picture stream on the first non-valid type diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/ListFormatOverrideLevel.java b/src/scratchpad/src/org/apache/poi/hwpf/model/ListFormatOverrideLevel.java index 2cc28b336d..0acd9d0c3b 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/ListFormatOverrideLevel.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/ListFormatOverrideLevel.java @@ -34,6 +34,7 @@ public final class ListFormatOverrideLevel public ListFormatOverrideLevel( byte[] buf, int offset ) { _base = new LFOLVLBase( buf, offset ); + offset += LFOLVLBase.getSize(); if ( _base.isFFormatting() ) { diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java index 686f29706c..17e378d26a 100644 --- a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java +++ b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java @@ -719,4 +719,15 @@ public class TestBugs extends TestCase HWPFTestDataSamples.writeOutAndReadBack( HWPFTestDataSamples .openSampleFile( "Bug51834.doc" ) ); } + + /** + * Bug 52032 - [BUG] & [partial-PATCH] HWPF - ArrayIndexOutofBoundsException + * with no stack trace (broken after revision 1178063) + */ + public void testBug52032() throws Exception + { + HWPFTestDataSamples.openSampleFile( "Bug52032.doc" ); + HWPFTestDataSamples.writeOutAndReadBack( HWPFTestDataSamples + .openSampleFile( "Bug52032.doc" ) ); + } } diff --git a/test-data/document/Bug52032.doc b/test-data/document/Bug52032.doc new file mode 100644 index 0000000000000000000000000000000000000000..c91d240bf953705e69c1a7b5cc77dc61ee4098ca GIT binary patch literal 91136 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 lwvKgnOnB}BIp>I%t<3V=62e=inm