}
private static void fixZipFile$getInputStream() {
+ final Field ZipEntry$nameLen = scanField(ZipEntry.class, "nameLen", "nameLength");
+ if (ZipEntry$nameLen == null)
+ return;
+ ZipEntry$nameLen.setAccessible(true);
+
final Field ZipFile$mRaf = scanField(ZipFile.class, "mRaf", "raf");
if (ZipFile$mRaf == null)
return;
if ((raf.readShort() & 0x0080) != 0)
throw new ZipException("bug #9695860 [" + thiz.getName() + "]");
- raf.skipBytes(20);
+ raf.skipBytes(18);
+
+ int length = raf.readShort() & 0xffff;
+ if (length != ZipEntry$nameLen.getInt(entry))
+ throw new ZipException("bug #sauriks [" + thiz.getName() + "]");
+
if ((raf.readShort() & 0x0080) != 0)
throw new ZipException("bug #9695860 [" + thiz.getName() + "]");
}