Ok. I did that. https://github.com/golang/go/issues/51337 .
On Wed, Feb 23, 2022 at 4:20 PM Ian Lance Taylor <i...@golang.org> wrote: > On Wed, Feb 23, 2022 at 1:46 PM David Karr <davidmichaelk...@gmail.com> > wrote: > > > > A while ago, I wrote a small Go app that reads things from zip files. I > tested it with various zip files (usually Java jar files), and it has > always worked perfectly fine. > > > > Today I'm looking at another jar file. The Java "jar" command likes it > perfectly fine. I could list the contents and extract all the files. Java > had no particular trouble running with the jar file. > > > > When I try to call "zip.OpenReader()" on this jar file, it just gives me > ""zip: not a valid zip file"". Well, great. > > > > I then ran a command to run the same command on every jar file in my > home directory tree, where there are a couple of thousand from various tool > distributions. I counted how many failed with that same error. I found > just the one I already have. > > > > This jar file is a little over 12mb. Several of the jar files that > don't fail are quite a bit larger than this. Most of the ones that don't > fail are smaller than this. The permissions on this jar are the same as the > others. > > > > I then tried passing this jar file to "unzip". It was able to unzip it, > but it did print this: > > > > warning [<jar file name>]: 3624 extra bytes at beginning or within > zipfile > > (attempting to process anyway) > > > > I tried this on some of the working jar files, and it didn't print this > warning. > > > > So, it appears that if anything, this jar file is "nonstandard", but > both unzip and jar have no problem with it, and jar didn't even say there > was an issue with it. The zip package, however, bombs on this with no > information. > > > > I'm going to go to the people who gave me that jar file and ask them how > they produced it, but I think it's clear it's not fatally broken. > > > > I haven't submitted a bug report for this package yet, as I wanted some > feedback on this first. > > The error is zip.ErrFormat. From a quick look at the sources it can > be returned if > > - a file header does not start with the required signature (0x04034b50) > - a directory header does not start with the required signature > (0x02014b50) > - a directory entry is too short to contain the additional information > it claims to hold > - a directory entry fails to contain the additional information it > claims to hold > - the directory end signature (0x06054b50) is not found > - the offset in the directory is invalid (negative or larger than the file > size) > > There is no especially easy way to find out exactly which one is > happening. You could add some print statements to > archive/zip/reader.go to narrow it down. > > I'm not sure what to make of the "3624 extra bytes". > > Not sure how much this helps. If you can share the zip file, you > could open a bug report. > > Ian > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CAA5t8VpRkTniYnMKhQ%2BDfL8v57wM8Gj-4vHFq5i887Tw2Rwaeg%40mail.gmail.com.