< prev index next >

src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystem.java

Print this page

        

*** 1064,1076 **** zerror("invalid CEN header (encrypted entry)"); if (method != METHOD_STORED && method != METHOD_DEFLATED) zerror("invalid CEN header (unsupported compression method: " + method + ")"); if (pos + CENHDR + nlen > limit) zerror("invalid CEN header (bad header size)"); ! byte[] name = Arrays.copyOfRange(cen, pos + CENHDR, pos + CENHDR + nlen); IndexNode inode = new IndexNode(name, pos); inodes.put(inode, inode); // skip ext and comment pos += (CENHDR + nlen + elen + clen); } if (pos + ENDHDR != cen.length) { zerror("invalid CEN header (bad header size)"); --- 1064,1081 ---- zerror("invalid CEN header (encrypted entry)"); if (method != METHOD_STORED && method != METHOD_DEFLATED) zerror("invalid CEN header (unsupported compression method: " + method + ")"); if (pos + CENHDR + nlen > limit) zerror("invalid CEN header (bad header size)"); ! int startIndex = pos + CENHDR; ! int endIndex = startIndex + nlen; ! startIndex = ((nlen > 0) && (char)cen[startIndex] == '/') ? startIndex + 1 : startIndex; ! byte[] name = Arrays.copyOfRange(cen, startIndex, endIndex); ! if(name.length > 0){ IndexNode inode = new IndexNode(name, pos); inodes.put(inode, inode); + } // skip ext and comment pos += (CENHDR + nlen + elen + clen); } if (pos + ENDHDR != cen.length) { zerror("invalid CEN header (bad header size)");
< prev index next >