Andrii Hudz created COMPRESS-628:
------------------------------------

             Summary: OutOfMemoryError on pack200 
NewAttributeBands.readNextUnionCase
                 Key: COMPRESS-628
                 URL: https://issues.apache.org/jira/browse/COMPRESS-628
             Project: Commons Compress
          Issue Type: Bug
          Components: Archivers
    Affects Versions: 1.21
         Environment: ubuntu18, java-11-openjdk-amd64
            Reporter: Andrii Hudz


Similar to https://issues.apache.org/jira/browse/COMPRESS-626

pack200.NewAttributeBands.readNextUnionCase can result in an infinite loop that 
finally leads to an out of memory error.


{code:java}
import org.apache.commons.compress.harmony.pack200.*;

public class ApacheCompress_1_22_90a4d8b3_OutOfMemory {
    public static void main(String[] args) throws Exception {
        CPUTF8 name = new CPUTF8("");
        CPUTF8 layout = new CPUTF8("Re\\T");
        new NewAttributeBands(1, null, null,
                new AttributeDefinitionBands.AttributeDefinition(35, 
AttributeDefinitionBands.CONTEXT_CLASS, name, layout)
        );
    }
}
 {code}
 

exception on 1.22 snapshot commit(90a4d8b3)
{code:java}
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space: failed 
reallocation of scalar replaced objects {code}
exception on  1.21
{code:java}
java.lang.OutOfMemoryError: Java heap space
        at java.base/java.util.Arrays.copyOf(Arrays.java:3745)
        at 
java.base/java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:172)
        at 
java.base/java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:748)
        at java.base/java.lang.StringBuffer.append(StringBuffer.java:429)
        at 
org.apache.commons.compress.harmony.pack200.NewAttributeBands.getStreamUpToMatchingBracket(NewAttributeBands.java:822)
        at 
org.apache.commons.compress.harmony.pack200.NewAttributeBands.readNextUnionCase(NewAttributeBands.java:304)
        at 
org.apache.commons.compress.harmony.pack200.NewAttributeBands.readNextLayoutElement(NewAttributeBands.java:237)
        at 
org.apache.commons.compress.harmony.pack200.NewAttributeBands.readNextAttributeElement(NewAttributeBands.java:184)
        at 
org.apache.commons.compress.harmony.pack200.NewAttributeBands.parseLayout(NewAttributeBands.java:95)
        at 
org.apache.commons.compress.harmony.pack200.NewAttributeBands.<init>(NewAttributeBands.java:53)
        at 
ApacheCompress_1_22_90a4d8b3_OutOfMemory.main(ApacheCompress_1_22_90a4d8b3_OutOfMemory.java:7)
 {code}



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

Reply via email to