Bug 64721 - NullPointerException occurs when calling getDataSize() of an object created with ExtRst.copy()
Summary: NullPointerException occurs when calling getDataSize() of an object created w...
Alias: None
Product: POI
Classification: Unclassified
Component: HSSF (show other bugs)
Version: 4.1.2-FINAL
Hardware: All All
: P2 critical (vote)
Target Milestone: ---
Assignee: POI Developers List
Depends on:
Reported: 2020-09-08 11:07 UTC by Kwon Ohyoung
Modified: 2020-09-09 08:43 UTC (History)
1 user (show)

Patch for this error (1.02 KB, patch)
2020-09-09 06:21 UTC, Kwon Ohyoung
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Kwon Ohyoung 2020-09-08 11:07:26 UTC
Class: org.apache.poi.hssf.record.common.ExtRst
Method: getDataSize()

Null Pointer Property: extraData

I am developing excel export function using Jxls 2.8.1 and jxls-poi 2.8.1, poi 4.1.2 version.

The export function for xlsx was created first and is working fine.

During testing because the export function for xls was also needed, I found that a NullPointerException occurred during the write process.

As a result of tracking the location of the error using the Debugger, when executing ExtRst.getDataSize(), a NullPointerException occurred in the extraData.length part and reported.

This error is caused by leaving extraData null in ExtRst.copy() which is called when org.apache.poi.hssf.record.common.UnicodeString.copy() is called.

I can't afford to wait for the patch to complete, so I'm going to use version 4.1.1 without the ExtRst class.
Comment 1 Kwon Ohyoung 2020-09-09 06:21:47 UTC
Created attachment 37437 [details]
Patch for this error

As a result of checking the version 4.1.1 and below, I confirmed that ExtRst exists as an inner class of UnicodeString, but there is no same problem.

In the process of separating ExtRst into an independent class and replacing clone() with copy(), the process of initializing populateEmpty() seems to be missing.

Uploaded Patch: (from: /tags/REL_4_1_2)
   -Modify to call this() in copy constructor ExtRst(ExtRst other)
   -Add test case to detect this NullPointerException case
Comment 2 PJ Fanning 2020-09-09 08:43:19 UTC
thanks - merged with https://github.com/apache/poi/commit/6c7bf59087e720a663fc5aec7ec5b2d502d7accd