Hello, Andrew and Jeroen! The patched applied to InflaterHuffmanTree.java is ok. But the patch for ZipFile isn't - you just reject any zip file that contains a single encrypted file. Mine (or Daniel's) solution is to fail only when trying to read from an encrypted zip entry. See classpath-ivmai-30.diff (http://article.gmane.org/gmane.comp.java.classpath.patches/13013).
Regards. Tue, 13 Jul 2010 17:50:30 +0100 Andrew John Hughes <ahug...@redhat.com>: > On 13 July 2010 13:53, Jeroen Frijters <jer...@sumatra.nl> wrote: > > Hello, > > > > I've committed the patch below and closed the bug. > > > > Thanks. I couldn't include the whole of Daniel's patch as he hasn't > signed a copyright assignment. > > > Regards, > > Jeroen > > > > Index: InflaterHuffmanTree.java > > =================================================================== > > RCS file: > > /cvsroot/classpath/classpath/java/util/zip/InflaterHuffmanTree.java,v > > retrieving revision 1.7 > > diff -u -r1.7 InflaterHuffmanTree.java > > --- InflaterHuffmanTree.java 3 Jun 2010 19:13:21 -0000 1.7 > > +++ InflaterHuffmanTree.java 13 Jul 2010 12:42:57 -0000 > > @@ -95,11 +95,14 @@ > > blCount[bits]++; > > } > > > > + int max = 0; > > int code = 0; > > int treeSize = 512; > > for (int bits = 1; bits <= MAX_BITLEN; bits++) > > { > > nextCode[bits] = code; > > + if (blCount[bits] > 0) > > + max = bits; > > code += blCount[bits] << (16 - bits); > > if (bits >= 10) > > { > > @@ -109,8 +112,8 @@ > > treeSize += (end - start) >> (16 - bits); > > } > > } > > - if (code != 65536) > > - throw new DataFormatException("Code lengths don't add up properly."); > > + if (code != 65536 && max != 1) > > + throw new DataFormatException("incomplete dynamic bit lengths tree"); > > > > /* Now create and fill the extra tables from longest to shortest > > * bit len. This way the sub trees will be aligned. > > > > > >> -----Original Message----- > >> From: classpath-patches-boun...@gnu.org [mailto:classpath-patches- > >> boun...@gnu.org] On Behalf Of Ivan Maidanski > >> Sent: Monday, June 28, 2010 9:41 AM > >> To: classpath-patches > >> Cc: Daniel Noll; Andrew John Hughes > >> Subject: [cp-patches] What's about bug 36560 (Error parsing zip > >> file...)? > >> > >> Hello! > >> > >> Andrew - > >> could you apply the proposed patch > >> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=18682&action=view) and > >> close bug 36560? > >> > >> I can't immediately propose the test case for this bug but I've > >> discovered this issue when tried to use Classpath > >> Inflater/InflaterInputStream with OpenJDK PNGImageReader - on some > >> legacy .png files a ZipException("Code lengths don't add up properly") > >> was thrown while OpenJDK Inflater (based on zlib) worked correctly. The > >> patch proposed by Daniel Noll solved my problem. > >> > >> Regards. > > > > -- > Andrew :-)