From 34d9764ca55bd3999748dd17e1a52ae54c16736f Mon Sep 17 00:00:00 2001 From: Javen O'Neal Date: Mon, 10 Jul 2017 01:34:30 +0000 Subject: [PATCH] bug 60685: ignore problems with HPBF Publisher Quill Contents PLC hyperlink records so that text extraction can continue git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1801405 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/hpbf/model/QuillContents.java | 12 +++++++++++- test-data/publisher/60685.pub | Bin 0 -> 119296 bytes 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 test-data/publisher/60685.pub diff --git a/src/scratchpad/src/org/apache/poi/hpbf/model/QuillContents.java b/src/scratchpad/src/org/apache/poi/hpbf/model/QuillContents.java index f813b9455c..439055c8aa 100644 --- a/src/scratchpad/src/org/apache/poi/hpbf/model/QuillContents.java +++ b/src/scratchpad/src/org/apache/poi/hpbf/model/QuillContents.java @@ -26,11 +26,15 @@ import org.apache.poi.hpbf.model.qcbits.UnknownQCBit; import org.apache.poi.poifs.filesystem.DirectoryNode; import org.apache.poi.util.LittleEndian; import org.apache.poi.util.LocaleUtil; +import org.apache.poi.util.POILogFactory; +import org.apache.poi.util.POILogger; /** * Read Quill Contents (/Quill/QuillSub/CONTENTS) from an HPBF (Publisher .pub) document */ public final class QuillContents extends HPBFPart { + private static POILogger logger = POILogFactory.getLogger(QuillContents.class); + private static final String[] PATH = { "Quill", "QuillSub", "CONTENTS", }; private QCBit[] bits; @@ -69,7 +73,13 @@ public final class QuillContents extends HPBFPart { if(bitType.equals("TEXT")) { bits[i] = new QCTextBit(thingType, bitType, bitData); } else if(bitType.equals("PLC ")) { - bits[i] = QCPLCBit.createQCPLCBit(thingType, bitType, bitData); + try { + bits[i] = QCPLCBit.createQCPLCBit(thingType, bitType, bitData); + } catch (ArrayIndexOutOfBoundsException e) { + // bug 60685: fall back so that the rest of the document can be read + logger.log(POILogger.WARN, "Unable to read Quill Contents PLC Bit record. Ignoring this record."); + bits[i] = new UnknownQCBit(thingType, bitType, bitData); + } } else { bits[i] = new UnknownQCBit(thingType, bitType, bitData); } diff --git a/test-data/publisher/60685.pub b/test-data/publisher/60685.pub new file mode 100644 index 0000000000000000000000000000000000000000..37d3dce70e1786e948edd5592527f90be1fae2ff GIT binary patch literal 119296 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