RFR [11u backport]: 8034802: (zipfs) newFileSystem throws UOE when the zip file is located in a custom file system

Lindenmaier, Goetz goetz.lindenmaier at sap.com
Tue Jan 29 07:58:58 UTC 2019


Hi Chris, 

this is fine, too.

Best regards, Goetz.

> -----Original Message-----
> From: Langer, Christoph
> Sent: Montag, 28. Januar 2019 23:28
> To: Lindenmaier, Goetz <goetz.lindenmaier at sap.com>
> Cc: core-libs-dev at openjdk.java.net
> Subject: RE: RFR [11u backport]: 8034802: (zipfs) newFileSystem throws UOE
> when the zip file is located in a custom file system
> 
> Hi Goetz,
> 
> > Patching the file myself really helped to see there are no real changes.
> >
> > For the missing patch of the constructor I understand it was only an arbitrary
> > reordering of arguments you omitted. Thus the whole chunk disappeared.
> > This makes sense, and in case someone downports the other change he
> > should be able to cope with that.
> 
> Well, there were actually 3 failing hunks:
> 
> --- ZipFileSystem.java
> +++ ZipFileSystem.java
> @@ -316,8 +326,8 @@
>                  IndexNode inode = getInode(path);
>                  if (inode == null)
>                      return null;
> -                e = new Entry(inode.name, inode.isdir);  // pseudo directory
> -                e.method = METHOD_STORED;                // STORED for dir
> +                // pseudo directory, uses METHOD_STORED
> +                e = new Entry(inode.name, inode.isdir, METHOD_STORED);
>                  e.mtime = e.atime = e.ctime = zfsDefaultTimeStamp;
>              }
>          } finally {
> 
> This one just had to find its place -> it is included in my change (line 329 of new
> file).
> 
> @@ -1087,8 +1061,9 @@
>              if (pos + CENHDR + nlen > limit) {
>                  zerror("invalid CEN header (bad header size)");
>              }
> -            IndexNode inode = new IndexNode(cen, nlen, pos);
> +            IndexNode inode = new IndexNode(cen, pos, nlen);
>              inodes.put(inode, inode);
> +
>              // skip ext and comment
>              pos += (CENHDR + nlen + elen + clen);
>          }
> 
> This one was the reordering of arguments when calling the "IndexNode"
> constructor itself.
> 
> @@ -1806,7 +1777,7 @@
>          }
> 
>          // constructor for cenInit() (1) remove tailing '/' (2) pad leading '/'
> -        IndexNode(byte[] cen, int nlen, int pos) {
> +        IndexNode(byte[] cen, int pos, int nlen) {
>              int noff = pos + CENHDR;
>              if (cen[noff + nlen - 1] == '/') {
>                  isdir = true;
> 
> This one was the reordering of arguments of the "IndexNode" constructor
> itself.
> 
> I think it's better to also take over the reordering of arguments of the
> constructor. Here's an updated webrev:
> http://cr.openjdk.java.net/~clanger/webrevs/8034802.11u.1/
> 
> The updates are in line 1054 and 1770 of the new ZipFileSystem.java.
> 
> Best regards
> Christoh



More information about the core-libs-dev mailing list