}
 
     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() + "]");
                     }