commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sebb (Commented) (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (COMPRESS-177) TarArchiveInputStream throws IllegalArgumentException on valid TAR file
Date Tue, 21 Feb 2012 14:54:34 GMT

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

Sebb commented on COMPRESS-177:
-------------------------------

Looks like the archive might be using the Joerg Schilling STAR format [1] for numeric fields:

Star implements  a  vendor  specific  (and  thus  non-POSIX)
extension  to  put  bigger  numbers into the numeric fields.
This is done by using a base 256 coding.  The top bit of the
first character in the appropriate 8 character or 12 charac-
ter field is set to flag non octal coding.

The value certainly makes sense in that context.

As to the exception that is thrown, IAE makes sense in the context of the TarUtils.parseOctal()
method.
Maybe that should be converted to IOE by one of the higher level methods.

[1] http://cdrecord.berlios.de/private/man/star/star.4.html
                
> 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

        

Mime
View raw message