Hi Scott,
> I don’t understand where the values of text.length() and string.length() are
> coming from.
The values are parameters of method "checkMaxTextSize",
Where is "checkMaxTextSize" called and what are the parameters?
Please use a decent IDE, and check the references to the method!
Ok, the method is called in XSSFExcelExctractor on several locations.
e.g.
line 165: String contents = cell.getCellFormula();
line 166: checkMaxTextSize(text, contents);
So as the exception says, it checks the overall size ... so <text> must be
something accumulated and the checkMaxTextSize is used, to see if that little
bit more of <contents> is breaking the threshold.
What else is accumulated?
That depends on how you configured the extractor ... just check its source! [1]
> I'm getting this exception and I don't know what (in the .zip file) is
> causing this to be thrown.
So your file seems to be nearly empty?
Maybe select everything and remove the comments?
To find out what really is causing this, I would copy the extractor class and
add some counters -
just use a debugger and give it a try!
Andi
[1]
if (formulasNotResults) {
String contents = cell.getCellFormula();
checkMaxTextSize(text, contents);
...
if(includeCellComments && comment != null) {
// Replace any newlines with spaces, otherwise itbreaks the output String
commentText = comment.getString().getString().replace('\n', ' ');
checkMaxTextSize(text, commentText);
...
private void handleStringCell(StringBuilder text, Cell cell) {
String contents = cell.getRichStringCellValue().getString();
checkMaxTextSize(text, contents);
...
if (type == CellType.NUMERIC) {
CellStyle cs = cell.getCellStyle();
if (cs != null && cs.getDataFormatString() != null) {
String contents =
formatter.formatRawCellContents(cell.getNumericCellValue()...);
checkMaxTextSize(text, contents);
...
// No supported styling applies to this cell String contents =
((XSSFCell)cell).getRawValue();
if (contents != null) {
checkMaxTextSize(text, contents);
On 25.03.19 16:17, Scott Gardner wrote:
> I understand that, but specifically what is it in a .zip file that will
> cause this if statement to throw the IllegalStateException? I don’t
> understand where the values of text.length() and string.length() are coming
> from.
>
> int size = text.length() + string.length();
>
> if(size > ZipSecureFile.getMaxTextSize()) {
>
> I'm getting this exception and I don't know what (in the .zip file) is
> causing this to be thrown.
>
> The text would exceed the max allowed overall size of extracted text. By
> default this is prevented as some documents may exhaust available memory
> and it may indicate that the file is used to inflate memory usage and thus
> could pose a security risk. You can adjust this limit via
> ZipSecureFile.setMaxTextSize() if you need to work with files which have a
> lot of text. Size: 10485785, limit: MAX_TEXT_SIZE: 10485760
>
>
> On 2019/03/22 19:11:17, "pj.fanning" <[email protected]> wrote:
>> The code is there to protect against
> https://en.wikipedia.org/wiki/Zip_bomb>