[jira] [Commented] (COMPRESS-567) IllegalArgumentException in ZipFile.positionAtCentralDirectory
[ https://issues.apache.org/jira/browse/COMPRESS-567?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17292369#comment-17292369 ] Stefan Bodewig commented on COMPRESS-567: - [~peterlee] I've gone a step further and made all our internally used stream classes throw {{IOException}} with commit 32509ee9 - I'd appreciate a second set of eyes. > IllegalArgumentException in ZipFile.positionAtCentralDirectory > -- > > Key: COMPRESS-567 > URL: https://issues.apache.org/jira/browse/COMPRESS-567 > Project: Commons Compress > Issue Type: Bug >Affects Versions: 1.20 >Reporter: Fabian Meumertzheim >Priority: Major > Attachments: crash.zip > > > The following snippet of code throws an undeclared IllegalArgumentException: > {code:java} > byte[] bytes = Base64.getDecoder().decode("UEsFBgAAAQD//1AAJP9QAA=="); > SeekableInMemoryByteChannel input = new SeekableInMemoryByteChannel(bytes); > try { > ZipFile file = new ZipFile(input); > } catch (IOException ignored) {} > {code} > The stack trace is: > {noformat} > java.lang.IllegalArgumentException: Position has to be in range 0.. 2147483647 > at > org.apache.commons.compress.utils.SeekableInMemoryByteChannel.position(SeekableInMemoryByteChannel.java:94) > at > org.apache.commons.compress.archivers.zip.ZipFile.positionAtCentralDirectory32(ZipFile.java:1128) > at > org.apache.commons.compress.archivers.zip.ZipFile.positionAtCentralDirectory(ZipFile.java:1037) > at > org.apache.commons.compress.archivers.zip.ZipFile.populateFromCentralDirectory(ZipFile.java:702) > at > org.apache.commons.compress.archivers.zip.ZipFile.(ZipFile.java:371) > at > org.apache.commons.compress.archivers.zip.ZipFile.(ZipFile.java:318) > at > org.apache.commons.compress.archivers.zip.ZipFile.(ZipFile.java:274) > {noformat} > I also attached the input as a ZIP file. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (COMPRESS-567) IllegalArgumentException in ZipFile.positionAtCentralDirectory
[ https://issues.apache.org/jira/browse/COMPRESS-567?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17291742#comment-17291742 ] Stefan Bodewig commented on COMPRESS-567: - most likely we should be throwing {{IOExceptions}} in {{SeekableByteChannel}}'s {{position}} - and fix {{truncate}} at the same time. > IllegalArgumentException in ZipFile.positionAtCentralDirectory > -- > > Key: COMPRESS-567 > URL: https://issues.apache.org/jira/browse/COMPRESS-567 > Project: Commons Compress > Issue Type: Bug >Affects Versions: 1.20 >Reporter: Fabian Meumertzheim >Priority: Major > Attachments: crash.zip > > > The following snippet of code throws an undeclared IllegalArgumentException: > {code:java} > byte[] bytes = Base64.getDecoder().decode("UEsFBgAAAQD//1AAJP9QAA=="); > SeekableInMemoryByteChannel input = new SeekableInMemoryByteChannel(bytes); > try { > ZipFile file = new ZipFile(input); > } catch (IOException ignored) {} > {code} > The stack trace is: > {noformat} > java.lang.IllegalArgumentException: Position has to be in range 0.. 2147483647 > at > org.apache.commons.compress.utils.SeekableInMemoryByteChannel.position(SeekableInMemoryByteChannel.java:94) > at > org.apache.commons.compress.archivers.zip.ZipFile.positionAtCentralDirectory32(ZipFile.java:1128) > at > org.apache.commons.compress.archivers.zip.ZipFile.positionAtCentralDirectory(ZipFile.java:1037) > at > org.apache.commons.compress.archivers.zip.ZipFile.populateFromCentralDirectory(ZipFile.java:702) > at > org.apache.commons.compress.archivers.zip.ZipFile.(ZipFile.java:371) > at > org.apache.commons.compress.archivers.zip.ZipFile.(ZipFile.java:318) > at > org.apache.commons.compress.archivers.zip.ZipFile.(ZipFile.java:274) > {noformat} > I also attached the input as a ZIP file. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (COMPRESS-567) IllegalArgumentException in ZipFile.positionAtCentralDirectory
[ https://issues.apache.org/jira/browse/COMPRESS-567?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17291491#comment-17291491 ] Peter Lee commented on COMPRESS-567: I see. Thank you for you explanation. > IllegalArgumentException in ZipFile.positionAtCentralDirectory > -- > > Key: COMPRESS-567 > URL: https://issues.apache.org/jira/browse/COMPRESS-567 > Project: Commons Compress > Issue Type: Bug >Affects Versions: 1.20 >Reporter: Fabian Meumertzheim >Priority: Major > Attachments: crash.zip > > > The following snippet of code throws an undeclared IllegalArgumentException: > {code:java} > byte[] bytes = Base64.getDecoder().decode("UEsFBgAAAQD//1AAJP9QAA=="); > SeekableInMemoryByteChannel input = new SeekableInMemoryByteChannel(bytes); > try { > ZipFile file = new ZipFile(input); > } catch (IOException ignored) {} > {code} > The stack trace is: > {noformat} > java.lang.IllegalArgumentException: Position has to be in range 0.. 2147483647 > at > org.apache.commons.compress.utils.SeekableInMemoryByteChannel.position(SeekableInMemoryByteChannel.java:94) > at > org.apache.commons.compress.archivers.zip.ZipFile.positionAtCentralDirectory32(ZipFile.java:1128) > at > org.apache.commons.compress.archivers.zip.ZipFile.positionAtCentralDirectory(ZipFile.java:1037) > at > org.apache.commons.compress.archivers.zip.ZipFile.populateFromCentralDirectory(ZipFile.java:702) > at > org.apache.commons.compress.archivers.zip.ZipFile.(ZipFile.java:371) > at > org.apache.commons.compress.archivers.zip.ZipFile.(ZipFile.java:318) > at > org.apache.commons.compress.archivers.zip.ZipFile.(ZipFile.java:274) > {noformat} > I also attached the input as a ZIP file. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (COMPRESS-567) IllegalArgumentException in ZipFile.positionAtCentralDirectory
[ https://issues.apache.org/jira/browse/COMPRESS-567?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17291490#comment-17291490 ] Fabian Meumertzheim commented on COMPRESS-567: -- I found these bugs using https://github.com/CodeIntelligenceTesting/jazzer, which provides you with both the raw crashing input and a Java reproducer with the raw input encoded as Base64 for easier sharing (byte array literals are cumbersome in Java and would need more characters). > IllegalArgumentException in ZipFile.positionAtCentralDirectory > -- > > Key: COMPRESS-567 > URL: https://issues.apache.org/jira/browse/COMPRESS-567 > Project: Commons Compress > Issue Type: Bug >Affects Versions: 1.20 >Reporter: Fabian Meumertzheim >Priority: Major > Attachments: crash.zip > > > The following snippet of code throws an undeclared IllegalArgumentException: > {code:java} > byte[] bytes = Base64.getDecoder().decode("UEsFBgAAAQD//1AAJP9QAA=="); > SeekableInMemoryByteChannel input = new SeekableInMemoryByteChannel(bytes); > try { > ZipFile file = new ZipFile(input); > } catch (IOException ignored) {} > {code} > The stack trace is: > {noformat} > java.lang.IllegalArgumentException: Position has to be in range 0.. 2147483647 > at > org.apache.commons.compress.utils.SeekableInMemoryByteChannel.position(SeekableInMemoryByteChannel.java:94) > at > org.apache.commons.compress.archivers.zip.ZipFile.positionAtCentralDirectory32(ZipFile.java:1128) > at > org.apache.commons.compress.archivers.zip.ZipFile.positionAtCentralDirectory(ZipFile.java:1037) > at > org.apache.commons.compress.archivers.zip.ZipFile.populateFromCentralDirectory(ZipFile.java:702) > at > org.apache.commons.compress.archivers.zip.ZipFile.(ZipFile.java:371) > at > org.apache.commons.compress.archivers.zip.ZipFile.(ZipFile.java:318) > at > org.apache.commons.compress.archivers.zip.ZipFile.(ZipFile.java:274) > {noformat} > I also attached the input as a ZIP file. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (COMPRESS-567) IllegalArgumentException in ZipFile.positionAtCentralDirectory
[ https://issues.apache.org/jira/browse/COMPRESS-567?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17291474#comment-17291474 ] Peter Lee commented on COMPRESS-567: Just curious about the test : how is the test file _Base64.getDecoder().decode("UEsFBgAAAQD//1AAJP9QAA==")_ generated? I believe this zip is generated by some fuzzer, and you encoded it with Base64 to simpify the test. Am I right? > IllegalArgumentException in ZipFile.positionAtCentralDirectory > -- > > Key: COMPRESS-567 > URL: https://issues.apache.org/jira/browse/COMPRESS-567 > Project: Commons Compress > Issue Type: Bug >Affects Versions: 1.20 >Reporter: Fabian Meumertzheim >Priority: Major > Attachments: crash.zip > > > The following snippet of code throws an undeclared IllegalArgumentException: > {code:java} > byte[] bytes = Base64.getDecoder().decode("UEsFBgAAAQD//1AAJP9QAA=="); > SeekableInMemoryByteChannel input = new SeekableInMemoryByteChannel(bytes); > try { > ZipFile file = new ZipFile(input); > } catch (IOException ignored) {} > {code} > The stack trace is: > {noformat} > java.lang.IllegalArgumentException: Position has to be in range 0.. 2147483647 > at > org.apache.commons.compress.utils.SeekableInMemoryByteChannel.position(SeekableInMemoryByteChannel.java:94) > at > org.apache.commons.compress.archivers.zip.ZipFile.positionAtCentralDirectory32(ZipFile.java:1128) > at > org.apache.commons.compress.archivers.zip.ZipFile.positionAtCentralDirectory(ZipFile.java:1037) > at > org.apache.commons.compress.archivers.zip.ZipFile.populateFromCentralDirectory(ZipFile.java:702) > at > org.apache.commons.compress.archivers.zip.ZipFile.(ZipFile.java:371) > at > org.apache.commons.compress.archivers.zip.ZipFile.(ZipFile.java:318) > at > org.apache.commons.compress.archivers.zip.ZipFile.(ZipFile.java:274) > {noformat} > I also attached the input as a ZIP file. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (COMPRESS-567) IllegalArgumentException in ZipFile.positionAtCentralDirectory
[ https://issues.apache.org/jira/browse/COMPRESS-567?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17290882#comment-17290882 ] Fabian Meumertzheim commented on COMPRESS-567: -- Yes, the ZIP is clearly invalid, but I would expect a (subclass of) IOException here instead of an IllegalArgumentException. > IllegalArgumentException in ZipFile.positionAtCentralDirectory > -- > > Key: COMPRESS-567 > URL: https://issues.apache.org/jira/browse/COMPRESS-567 > Project: Commons Compress > Issue Type: Bug >Affects Versions: 1.20 >Reporter: Fabian Meumertzheim >Priority: Major > Attachments: crash.zip > > > The following snippet of code throws an undeclared IllegalArgumentException: > {code:java} > byte[] bytes = Base64.getDecoder().decode("UEsFBgAAAQD//1AAJP9QAA=="); > SeekableInMemoryByteChannel input = new SeekableInMemoryByteChannel(bytes); > try { > ZipFile file = new ZipFile(input); > } catch (IOException ignored) {} > {code} > The stack trace is: > {noformat} > java.lang.IllegalArgumentException: Position has to be in range 0.. 2147483647 > at > org.apache.commons.compress.utils.SeekableInMemoryByteChannel.position(SeekableInMemoryByteChannel.java:94) > at > org.apache.commons.compress.archivers.zip.ZipFile.positionAtCentralDirectory32(ZipFile.java:1128) > at > org.apache.commons.compress.archivers.zip.ZipFile.positionAtCentralDirectory(ZipFile.java:1037) > at > org.apache.commons.compress.archivers.zip.ZipFile.populateFromCentralDirectory(ZipFile.java:702) > at > org.apache.commons.compress.archivers.zip.ZipFile.(ZipFile.java:371) > at > org.apache.commons.compress.archivers.zip.ZipFile.(ZipFile.java:318) > at > org.apache.commons.compress.archivers.zip.ZipFile.(ZipFile.java:274) > {noformat} > I also attached the input as a ZIP file. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (COMPRESS-567) IllegalArgumentException in ZipFile.positionAtCentralDirectory
[ https://issues.apache.org/jira/browse/COMPRESS-567?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17290875#comment-17290875 ] Peter Lee commented on COMPRESS-567: The offset of start of CFH is a 4 bytes unsigned value with a maximum of 2^32 - 1 = 4,294,967,295, which may exceeds the allowed range of SeekableInMemoryByteChannel. So you are expecting some other exception instead of IllegalArgumentException, is it? > IllegalArgumentException in ZipFile.positionAtCentralDirectory > -- > > Key: COMPRESS-567 > URL: https://issues.apache.org/jira/browse/COMPRESS-567 > Project: Commons Compress > Issue Type: Bug >Affects Versions: 1.20 >Reporter: Fabian Meumertzheim >Priority: Major > Attachments: crash.zip > > > The following snippet of code throws an undeclared IllegalArgumentException: > {code:java} > byte[] bytes = Base64.getDecoder().decode("UEsFBgAAAQD//1AAJP9QAA=="); > SeekableInMemoryByteChannel input = new SeekableInMemoryByteChannel(bytes); > try { > ZipFile file = new ZipFile(input); > } catch (IOException ignored) {} > {code} > The stack trace is: > {noformat} > java.lang.IllegalArgumentException: Position has to be in range 0.. 2147483647 > at > org.apache.commons.compress.utils.SeekableInMemoryByteChannel.position(SeekableInMemoryByteChannel.java:94) > at > org.apache.commons.compress.archivers.zip.ZipFile.positionAtCentralDirectory32(ZipFile.java:1128) > at > org.apache.commons.compress.archivers.zip.ZipFile.positionAtCentralDirectory(ZipFile.java:1037) > at > org.apache.commons.compress.archivers.zip.ZipFile.populateFromCentralDirectory(ZipFile.java:702) > at > org.apache.commons.compress.archivers.zip.ZipFile.(ZipFile.java:371) > at > org.apache.commons.compress.archivers.zip.ZipFile.(ZipFile.java:318) > at > org.apache.commons.compress.archivers.zip.ZipFile.(ZipFile.java:274) > {noformat} > I also attached the input as a ZIP file. -- This message was sent by Atlassian Jira (v8.3.4#803005)