[ 
https://issues.apache.org/jira/browse/IMAGING-332?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17834510#comment-17834510
 ] 

Bruno P. Kinoshita edited comment on IMAGING-332 at 4/6/24 9:17 AM:
--------------------------------------------------------------------

This seems to be fixed in 1.0.0-alpha4, just released (cc [~ggregory] ). I will 
update the changes.xml.
{noformat}
kinow@ranma:~/Development/java/apache/commons-imaging$ git tag --contains 
0209ed7a8947d7833480f1b8ebd5d9dfd36c4480
commons-imaging-1.0.0-M1-RC1
commons-imaging-1.0.0-alpha4-RC1
rel/commons-imaging-1.0.0-alpha4


kinow@ranma:~/Development/java/apache/commons-imaging$ git log --oneline 
0209ed7a8947d7833480f1b8ebd5d9dfd36c4480 | head -n 3
0209ed7a Refactor for arrays
d0fa70d1 More allocation checking
bb37ffe6 Test getImageSize{noformat}
And trying this code:
{noformat}
 package org.apache.commons.imaging.bytesource;

import org.apache.commons.imaging.Imaging;

public class Tests {
    public static void main(String[] args) throws Exception {
        byte[] input = 
java.util.Base64.getDecoder().decode("iVBORw0KGgoAAAAbaUNDUMlDQyCrbAAtGHZwQWdQyUNDIKtsAAAYiVBORw0KGgp1AAAASURBVA0KGgoAAAANSUhEUgAAACAAIAQACAJ/2QAAsnMAAAAAAElFTkRCYAAY");
        Imaging.getAllBufferedImages(input);
        System.out.println("OK!");
    }
}{noformat}
Results in
{noformat}
Exception in thread "main" 
org.apache.commons.imaging.common.AllocationRequestException: Allocation limit 
1,073,741,824 exceeded: 1,962,934,272
    at org.apache.commons.imaging.common.Allocator.check(Allocator.java:131)
    at 
org.apache.commons.imaging.common.BinaryFunctions.readBytes(BinaryFunctions.java:253)
    at 
org.apache.commons.imaging.formats.png.PngImageParser.readChunks(PngImageParser.java:631)
    at 
org.apache.commons.imaging.formats.png.PngImageParser.readChunks(PngImageParser.java:609)
    at 
org.apache.commons.imaging.formats.png.PngImageParser.getBufferedImage(PngImageParser.java:150)
    at 
org.apache.commons.imaging.formats.png.PngImageParser.getBufferedImage(PngImageParser.java:68)
    at 
org.apache.commons.imaging.AbstractImageParser.getAllBufferedImages(AbstractImageParser.java:259)
    at org.apache.commons.imaging.Imaging.getAllBufferedImages(Imaging.java:162)
    at org.apache.commons.imaging.Imaging.getAllBufferedImages(Imaging.java:157)
    at org.apache.commons.imaging.bytesource.Tests.main(Tests.java:8)Process 
finished with exit code 1 {noformat}


was (Author: kinow):
This seems to be fixed in 1.0.0-alpha4, just released (cc [~ggregory] ). I will 
update the changes.xml.
{noformat}
kinow@ranma:~/Development/java/apache/commons-imaging$ git tag --contains 
0209ed7a8947d7833480f1b8ebd5d9dfd36c4480
commons-imaging-1.0.0-M1-RC1
commons-imaging-1.0.0-alpha4-RC1
rel/commons-imaging-1.0.0-alpha4


kinow@ranma:~/Development/java/apache/commons-imaging$ git log --oneline 
0209ed7a8947d7833480f1b8ebd5d9dfd36c4480 | head -n 3
0209ed7a Refactor for arrays
d0fa70d1 More allocation checking
bb37ffe6 Test getImageSize{noformat}

> OutOfMemory with invalid PNG input file
> ---------------------------------------
>
>                 Key: IMAGING-332
>                 URL: https://issues.apache.org/jira/browse/IMAGING-332
>             Project: Commons Imaging
>          Issue Type: Bug
>          Components: Format: PNG
>    Affects Versions: 1.0-alpha3
>            Reporter: Dominik Stadler
>            Priority: Blocker
>              Labels: fuzzer
>             Fix For: 1.0.0-alpha4
>
>         Attachments: image-2022-08-14-13-50-28-786.png
>
>
> The following snippet will cause an OOM as it tries to allocate a huge 
> byte-array.
>  
> {code:java}
> byte[] input = 
> java.util.Base64.getDecoder().decode("iVBORw0KGgoAAAAbaUNDUMlDQyCrbAAtGHZwQWdQyUNDIKtsAAAYiVBORw0KGgp1AAAASURBVA0KGgoAAAANSUhEUgAAACAAIAQACAJ/2QAAsnMAAAAAAElFTkRCYAAY");
> Imaging.getAllBufferedImages(input); {code}
> All such allocations should be guarded by some limits, see e.g. 
> [https://poi.apache.org/apidocs/dev/org/apache/poi/util/IOUtils.html#safelyAllocate-long-int-]
>  for how Apache POI supports a configurable limit for allocations.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to