Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 4.3.4, 4.4, 5.0.0 alpha1
-
Component/s: Core/Parsing
-
Labels:None
-
Environment:All
-
Salesforce Case Reference:
-
Workaround Exists:Yes
-
Workaround Description:Customer is printing them as images from the pdf itself using BullZip to be able to open them in icepdf.
Description
The following stack trace is thrown when rendering the provided PDF files:
java.lang.ArrayIndexOutOfBoundsException: 6
at org.icepdf.core.pobjects.graphics.Indexed.init(Indexed.java:104)
at org.icepdf.core.pobjects.Resources.getColorSpace(Resources.java:199)
at org.icepdf.core.pobjects.Stream.getImage(Stream.java:2209)
at org.icepdf.core.pobjects.Resources.getImage(Resources.java:252)
at org.icepdf.core.util.ContentParser.consume_Do(ContentParser.java:2001)
at org.icepdf.core.util.ContentParser.parse(ContentParser.java:382)
at org.icepdf.core.pobjects.Page.init(Page.java:372)
at org.icepdf.core.views.swing.PageViewComponentImpl$PageInitilizer.run(PageViewComponentImpl.java:1072)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
java.lang.ArrayIndexOutOfBoundsException: 6
at org.icepdf.core.pobjects.graphics.Indexed.init(Indexed.java:104)
at org.icepdf.core.pobjects.Resources.getColorSpace(Resources.java:199)
at org.icepdf.core.pobjects.Stream.getImage(Stream.java:2209)
at org.icepdf.core.pobjects.Resources.getImage(Resources.java:252)
at org.icepdf.core.util.ContentParser.consume_Do(ContentParser.java:2001)
at org.icepdf.core.util.ContentParser.parse(ContentParser.java:382)
at org.icepdf.core.pobjects.Page.init(Page.java:372)
at org.icepdf.core.views.swing.PageViewComponentImpl$PageInitilizer.run(PageViewComponentImpl.java:1072)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
All the files are using Indexed colour model that specifies the colour lookup table as a stream. In all these cases the parsed stream is a little short and doesn't match m * (hival + 1). So I've added an array copy check to make sure the array is the correct size and padded with zeros if it's a little to short.