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

Christian Schlichtherle commented on COMPRESS-177:
--------------------------------------------------

I thought so. However, in this case the code should throw an IOException from 
TarInputStream.getArchiveEntry(), not an IllegalArgumentException. This comes 
completely unexpected and is misleading because it's not an illegal argument to 
this method, but an invalid file content.

I an IOException were thrown as documented by the Javadoc, then the TrueZIP 
Kernel would have identified it as a false positive archive file, which it is.
                
> TarArchiveInputStream throws IllegalArgumentException on valid TAR file
> -----------------------------------------------------------------------
>
>                 Key: COMPRESS-177
>                 URL: https://issues.apache.org/jira/browse/COMPRESS-177
>             Project: Commons Compress
>          Issue Type: Bug
>          Components: Archivers
>    Affects Versions: 1.3
>            Reporter: Gili
>
> Issue originally reported at http://java.net/jira/browse/TRUEZIP-219
> # Download 
> http://sourceforge.net/projects/boost/files/boost/1.48.0/boost_1_48_0.tar.gz?use_mirror=autoselect
> # I invoke Files.newDirectoryStream() on a TPath pointing to the resulting 
> .tar.gz file
> # The following exception is thrown:
> {code}
> java.lang.IllegalArgumentException: Invalid byte -1 at offset 7 in '<some 
> bytes>' len=8
>       at 
> org.apache.commons.compress.archivers.tar.TarUtils.parseOctal(TarUtils.java:86)
>       at 
> org.apache.commons.compress.archivers.tar.TarArchiveEntry.parseTarHeader(TarArchiveEntry.java:790)
>       at 
> org.apache.commons.compress.archivers.tar.TarArchiveEntry.<init>(TarArchiveEntry.java:308)
>       at 
> org.apache.commons.compress.archivers.tar.TarArchiveInputStream.getNextTarEntry(TarArchiveInputStream.java:198)
>       at 
> org.apache.commons.compress.archivers.tar.TarArchiveInputStream.getNextEntry(TarArchiveInputStream.java:380)
>       at 
> de.schlichtherle.truezip.fs.archive.tar.TarInputShop.<init>(TarInputShop.java:91)
>       at 
> de.schlichtherle.truezip.fs.archive.tar.TarDriver.newTarInputShop(TarDriver.java:159)
>       at 
> de.schlichtherle.truezip.fs.archive.tar.TarGZipDriver.newTarInputShop(TarGZipDriver.java:82)
>       at 
> de.schlichtherle.truezip.fs.archive.tar.TarDriver.newInputShop(TarDriver.java:151)
>       at 
> de.schlichtherle.truezip.fs.archive.tar.TarDriver.newInputShop(TarDriver.java:47)
>       at 
> de.schlichtherle.truezip.fs.archive.FsDefaultArchiveController.mount(FsDefaultArchiveController.java:170)
>       at 
> de.schlichtherle.truezip.fs.archive.FsFileSystemArchiveController$ResetFileSystem.autoMount(FsFileSystemArchiveController.java:98)
>       at 
> de.schlichtherle.truezip.fs.archive.FsFileSystemArchiveController.autoMount(FsFileSystemArchiveController.java:47)
>       at 
> de.schlichtherle.truezip.fs.archive.FsArchiveController.autoMount(FsArchiveController.java:129)
>       at 
> de.schlichtherle.truezip.fs.archive.FsArchiveController.getEntry(FsArchiveController.java:160)
>       at 
> de.schlichtherle.truezip.fs.archive.FsContextController.getEntry(FsContextController.java:117)
>       at 
> de.schlichtherle.truezip.fs.FsDecoratingController.getEntry(FsDecoratingController.java:76)
>       at 
> de.schlichtherle.truezip.fs.FsDecoratingController.getEntry(FsDecoratingController.java:76)
>       at 
> de.schlichtherle.truezip.fs.FsConcurrentController.getEntry(FsConcurrentController.java:164)
>       at 
> de.schlichtherle.truezip.fs.FsSyncController.getEntry(FsSyncController.java:108)
>       at 
> de.schlichtherle.truezip.fs.FsFederatingController.getEntry(FsFederatingController.java:156)
>       at 
> de.schlichtherle.truezip.nio.file.TFileSystem.newDirectoryStream(TFileSystem.java:348)
>       at 
> de.schlichtherle.truezip.nio.file.TPath.newDirectoryStream(TPath.java:963)
>       at 
> de.schlichtherle.truezip.nio.file.TFileSystemProvider.newDirectoryStream(TFileSystemProvider.java:344)
>       at java.nio.file.Files.newDirectoryStream(Files.java:400)
>       at 
> com.googlecode.boostmavenproject.GetSourcesMojo.convertToJar(GetSourcesMojo.java:248)
>       at 
> com.googlecode.boostmavenproject.GetSourcesMojo.download(GetSourcesMojo.java:221)
>       at 
> com.googlecode.boostmavenproject.GetSourcesMojo.execute(GetSourcesMojo.java:111)
>       at 
> org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
>       ... 20 more
> {code}
> Christian Schlichtherle (the TrueZip author) is expecting the Commons 
> Compress to throw IOException instead of IllegalArgumentException. I am 
> expecting no exception to be thrown because as far as I can tell the TAR file 
> is valid (opens up in WinRar and Ubuntu's built-in Archiver).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to