< prev index next >

src/java.base/share/classes/java/util/jar/JarFile.java

Print this page
rev 12879 : 8139706: JarFile.getBytes could use InputStream.readNBytes
Reviewed-by: chegar, sherman, alanb

*** 436,449 **** * META-INF files. */ private byte[] getBytes(ZipEntry ze) throws IOException { try (InputStream is = super.getInputStream(ze)) { int len = (int)ze.getSize(); ! byte[] b = is.readAllBytes(); ! if (len != -1 && b.length != len) throw new EOFException("Expected:" + len + ", read:" + b.length); ! return b; } } /** --- 436,459 ---- * META-INF files. */ private byte[] getBytes(ZipEntry ze) throws IOException { try (InputStream is = super.getInputStream(ze)) { int len = (int)ze.getSize(); ! byte[] b; ! // trust specified entry sizes when reasonably small ! if (len != -1 && len <= 65535) { ! b = new byte[len]; ! len = is.readNBytes(b, 0, len); ! if (len != b.length) { ! throw new EOFException("Expected:" + b.length + ", read:" + len); ! } ! } else { ! b = is.readAllBytes(); ! if (len > b.length) { throw new EOFException("Expected:" + len + ", read:" + b.length); ! } ! } return b; } } /**
< prev index next >