commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stefan Bodewig (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (COMPRESS-417) Decompress tar.gz file failed. java.io.Exception:Error detected parsing the header
Date Wed, 19 Jul 2017 11:20:01 GMT

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

Stefan Bodewig commented on COMPRESS-417:
-----------------------------------------

fixed in master branch, maybe you can try a recent 1.15-SNAPSHOT. I'll close this issue once
I've got a unit test. It should be easy to create one myself should your archive contain sensitive
data.

> Decompress tar.gz file failed. java.io.Exception:Error detected parsing the header
> ----------------------------------------------------------------------------------
>
>                 Key: COMPRESS-417
>                 URL: https://issues.apache.org/jira/browse/COMPRESS-417
>             Project: Commons Compress
>          Issue Type: Bug
>          Components: Archivers
>    Affects Versions: 1.14
>            Reporter: alphacome
>            Priority: Critical
>              Labels: tar
>             Fix For: 1.15
>
>         Attachments: 20000102.0000+0800-20000102.0015+0800_0.tar.gz
>
>
> {code:java}
>     public static void deGzipArchive(String filepath,String dir)
>             throws Exception {
>         final File input = new File(filepath);
>         final InputStream is = new FileInputStream(input);
>         final CompressorInputStream in = new GzipCompressorInputStream(is, true);
>         TarArchiveInputStream tin = new TarArchiveInputStream(in);
>         TarArchiveEntry entry = tin.getNextTarEntry();
>         while (entry != null) {
>             File archiveEntry = new File(dir, entry.getName());
>             archiveEntry.getParentFile().mkdirs();
>             if (entry.isDirectory()) {
>                 archiveEntry.mkdir();
>                 entry = tin.getNextTarEntry();
>                 continue;
>             }
>             OutputStream out = new FileOutputStream(archiveEntry);
>             IOUtils.copy(tin, out);
>             out.close();
>             entry = tin.getNextTarEntry();
>         }
>         in.close();
>         tin.close();
>     }
>     public static void main(String[] args) throws Exception {
>         Gztest.deGzipArchive("D:/20000102.0000+0800-20000102.0015+0800_0.tar.gz","D:/");
>     }
> {code}
> the tar.gz file can be decompressed in linux environment use 'tar' command.
> The error log:
> Exception in thread "main" java.io.IOException: Error detected parsing the header
> 	at org.apache.commons.compress.archivers.tar.TarArchiveInputStream.getNextTarEntry(TarArchiveInputStream.java:286)
> 	at gztest.deGzipArchive(gztest.java:23)
> 	at gztest.main(gztest.java:149)
> Caused by: java.lang.IllegalArgumentException: Invalid byte 100 at offset 0 in 'dos{NUL}{NUL}{NUL}{NUL}{NUL}'
len=8
> 	at org.apache.commons.compress.archivers.tar.TarUtils.parseOctal(TarUtils.java:141)
> 	at org.apache.commons.compress.archivers.tar.TarUtils.parseOctalOrBinary(TarUtils.java:171)
> 	at org.apache.commons.compress.archivers.tar.TarArchiveEntry.parseTarHeader(TarArchiveEntry.java:1128)
> 	at org.apache.commons.compress.archivers.tar.TarArchiveEntry.parseTarHeader(TarArchiveEntry.java:1091)
> 	at org.apache.commons.compress.archivers.tar.TarArchiveEntry.<init>(TarArchiveEntry.java:368)
> 	at org.apache.commons.compress.archivers.tar.TarArchiveInputStream.getNextTarEntry(TarArchiveInputStream.java:284)
> 	... 2 more
> 	



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message