mirror of
https://github.com/openjdk/jdk.git
synced 2026-02-25 01:30:10 +00:00
8000210: Improve JarFile code quality
Reviewed-by: ahgross, xuelei, mschoene
This commit is contained in:
parent
64bb35a5c6
commit
42cf97b02f
@ -34,6 +34,7 @@ import java.security.CodeSigner;
|
||||
import java.security.cert.Certificate;
|
||||
import java.security.AccessController;
|
||||
import java.security.CodeSource;
|
||||
import sun.misc.IOUtils;
|
||||
import sun.security.action.GetPropertyAction;
|
||||
import sun.security.util.ManifestEntryVerifier;
|
||||
import sun.misc.SharedSecrets;
|
||||
@ -329,6 +330,9 @@ class JarFile extends ZipFile {
|
||||
if (names != null) {
|
||||
for (int i = 0; i < names.length; i++) {
|
||||
JarEntry e = getJarEntry(names[i]);
|
||||
if (e == null) {
|
||||
throw new JarException("corrupted jar file");
|
||||
}
|
||||
if (!e.isDirectory()) {
|
||||
if (mev == null) {
|
||||
mev = new ManifestEntryVerifier
|
||||
@ -348,6 +352,10 @@ class JarFile extends ZipFile {
|
||||
// treat the jar file as being unsigned
|
||||
jv = null;
|
||||
verify = false;
|
||||
if (JarVerifier.debug != null) {
|
||||
JarVerifier.debug.println("jarfile parsing error!");
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
// if after initializing the verifier we have nothing
|
||||
@ -375,11 +383,9 @@ class JarFile extends ZipFile {
|
||||
* META-INF files.
|
||||
*/
|
||||
private byte[] getBytes(ZipEntry ze) throws IOException {
|
||||
byte[] b = new byte[(int)ze.getSize()];
|
||||
try (DataInputStream is = new DataInputStream(super.getInputStream(ze))) {
|
||||
is.readFully(b, 0, b.length);
|
||||
try (InputStream is = super.getInputStream(ze)) {
|
||||
return IOUtils.readFully(is, (int)ze.getSize(), true);
|
||||
}
|
||||
return b;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -479,12 +485,7 @@ class JarFile extends ZipFile {
|
||||
if (!isKnownToNotHaveClassPathAttribute()) {
|
||||
JarEntry manEntry = getManEntry();
|
||||
if (manEntry != null) {
|
||||
byte[] b = new byte[(int)manEntry.getSize()];
|
||||
try (DataInputStream dis = new DataInputStream(
|
||||
super.getInputStream(manEntry))) {
|
||||
dis.readFully(b, 0, b.length);
|
||||
}
|
||||
|
||||
byte[] b = getBytes(manEntry);
|
||||
int last = b.length - src.length;
|
||||
int i = 0;
|
||||
next:
|
||||
|
||||
@ -325,6 +325,10 @@ class DerIndefLenConverter {
|
||||
}
|
||||
}
|
||||
|
||||
if (unresolved != 0) {
|
||||
throw new IOException("not all indef len BER resolved");
|
||||
}
|
||||
|
||||
newData = new byte[dataSize + numOfTotalLenBytes + unused];
|
||||
dataPos=0; newDataPos=0; index=0;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user