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

Mario Fredenhagen commented on COMPRESS-705:
--------------------------------------------

Hi Gary,

I can attach the mentioned file so you don't have to download it by yourself.

[^grafana-9.2.9.tgz]

I hope this helps.

> Error: Extra subfield lenght exceeds remaining bytes in extra
> -------------------------------------------------------------
>
>                 Key: COMPRESS-705
>                 URL: https://issues.apache.org/jira/browse/COMPRESS-705
>             Project: Commons Compress
>          Issue Type: Bug
>          Components: Compressors
>    Affects Versions: 1.28.0
>         Environment: $ sw_vers                                                
>                                                                         
> ProductName:        macOS
> ProductVersion:        15.6
> BuildVersion:        24G84
> $ java -version                                                               
>                                                
> java version "24.0.1" 2025-04-15
> Java(TM) SE Runtime Environment Oracle GraalVM 24.0.1+9.1 (build 
> 24.0.1+9-jvmci-b01)
> Java HotSpot(TM) 64-Bit Server VM Oracle GraalVM 24.0.1+9.1 (build 
> 24.0.1+9-jvmci-b01, mixed mode, sharing)
>            Reporter: Mario Fredenhagen
>            Priority: Major
>         Attachments: grafana-9.2.9.tgz
>
>
> We try to read the content of a helm chart via a method like this:
> {noformat}
> $ helm repo add grafana https://grafana.github.io/helm-charts && helm repo 
> update grafana
> $ cd /tmp && helm pull grafana/grafana --version 9.2.9{noformat}
>     
> {noformat}
> import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
> import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
> import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;
> import java.io.IOException;
> import java.nio.file.Files;
> import java.io.File;
> import java.util.ArrayList;
> import java.util.List;
> public class Main {
>     public static void main(String[] args) throws IOException {
>         var tarZippedArchive = new File("/tmp/grafana-9.2.9.tgz");
>         var fileNames = getFileNamesFromTarGz(tarZippedArchive);
>         fileNames.forEach(System.out::println);
>     }
>     private static List<String> getFileNamesFromTarGz(File tarZippedArchive) 
> throws IOException {
>         var fileNames = new ArrayList<String>();
>         var input = Files.newInputStream(tarZippedArchive.toPath());
>         try (TarArchiveInputStream tar = new TarArchiveInputStream(new 
> GzipCompressorInputStream(input))) {
>             TarArchiveEntry entry;
>             while ((entry = tar.getNextEntry()) != null) {
>                 fileNames.add(entry.getName());
>             }
>         }
>         return fileNames;
>     }
> } {noformat}
> and get this error:
> {noformat}
> Exception in thread "main" java.io.IOException: Extra subfield lenght exceeds 
> remaining bytes in extra: 21064 > 37
>       at 
> org.apache.commons.compress.compressors.gzip.ExtraField.fromBytes(ExtraField.java:154)
>       at 
> org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream.init(GzipCompressorInputStream.java:388)
>       at 
> org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream.<init>(GzipCompressorInputStream.java:273)
>       at 
> org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream.<init>(GzipCompressorInputStream.java:286)
>       at Main.getFileNamesFromTarGz(Main.java:23)
>       at Main.main(Main.java:15){noformat}
> The same was working with version 1.27.1, so it is a regression. Command-line 
> utilities like `tar` can handle this archive without problems.
>  
> Also note the typo in the exception message lenght > length ;)



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

Reply via email to