From fce9af10cf542b064e7e1f58c0ae426743dd218b Mon Sep 17 00:00:00 2001 From: Yegor Kozlov Date: Thu, 14 Oct 2010 10:30:29 +0000 Subject: [PATCH] avoid NPE in ListLevel.getNumberText() when numberText is null, see Bugzilla 50075 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1022456 13f79535-47bb-0310-9956-ffa450edef68 --- src/documentation/content/xdocs/status.xml | 1 + .../org/apache/poi/hwpf/model/ListLevel.java | 5 ++- .../poi/hwpf/usermodel/TestBug50075.java | 41 ++++++++++++++++++ test-data/document/Bug50075.doc | Bin 0 -> 55296 bytes 4 files changed, 46 insertions(+), 1 deletion(-) create mode 100755 src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBug50075.java create mode 100644 test-data/document/Bug50075.doc diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index 3e7f469df8..a0cf1a988a 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,6 +34,7 @@ + 50075 - avoid NPE in ListLevel.getNumberText() when numberText is null 50067 - marked commons-logging and log4j as optional dependencies in POI poms 49928 - allow overridden built-in formats in XSSFCellStyle 49919 - support for BorderCode in HWPF diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/ListLevel.java b/src/scratchpad/src/org/apache/poi/hwpf/model/ListLevel.java index d6392af776..b8939b3817 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/ListLevel.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/ListLevel.java @@ -141,7 +141,10 @@ public final class ListLevel public String getNumberText() { - return new String(_numberText); + if (_numberText != null) + return new String(_numberText); + else + return null; } public void setStartAt(int startAt) diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBug50075.java b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBug50075.java new file mode 100755 index 0000000000..24ac72fe40 --- /dev/null +++ b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBug50075.java @@ -0,0 +1,41 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ +package org.apache.poi.hwpf.usermodel; + +import org.apache.poi.hwpf.HWPFDocument; +import org.apache.poi.hwpf.HWPFTestDataSamples; +import org.apache.poi.hwpf.model.ListFormatOverride; +import org.apache.poi.hwpf.model.ListLevel; + +import junit.framework.TestCase; + +public class TestBug50075 extends TestCase +{ + + public void test() { + HWPFDocument doc = HWPFTestDataSamples.openSampleFile("Bug50075.doc"); + Range range = doc.getRange(); + assertEquals(1, range.numParagraphs()); + ListEntry entry = (ListEntry) range.getParagraph(0); + ListFormatOverride override = doc.getListTables().getOverride(entry.getIlfo()); + ListLevel level = doc.getListTables().getLevel(override.getLsid(), entry.getIlvl()); + + // the bug reproduces, if this call fails with NullPointerException + level.getNumberText(); + } + +} diff --git a/test-data/document/Bug50075.doc b/test-data/document/Bug50075.doc new file mode 100644 index 0000000000000000000000000000000000000000..15303a46fe5d99a65208e2525cfde9596fe70016 GIT binary patch literal 55296 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 z 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 L-dx~s>Vf|O(eZfm literal 0 HcmV?d00001 -- 2.39.5