提交 41839572 编写于 作者: R robm

8174113: Better sourcing of code

Reviewed-by: weijun
上级 be515e2c
/* /*
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -535,6 +535,7 @@ public class CodeSource implements java.io.Serializable { ...@@ -535,6 +535,7 @@ public class CodeSource implements java.io.Serializable {
{ {
CertificateFactory cf; CertificateFactory cf;
Hashtable<String, CertificateFactory> cfs = null; Hashtable<String, CertificateFactory> cfs = null;
List<java.security.cert.Certificate> certList = null;
ois.defaultReadObject(); // location ois.defaultReadObject(); // location
...@@ -544,7 +545,7 @@ public class CodeSource implements java.io.Serializable { ...@@ -544,7 +545,7 @@ public class CodeSource implements java.io.Serializable {
// we know of 3 different cert types: X.509, PGP, SDSI, which // we know of 3 different cert types: X.509, PGP, SDSI, which
// could all be present in the stream at the same time // could all be present in the stream at the same time
cfs = new Hashtable<String, CertificateFactory>(3); cfs = new Hashtable<String, CertificateFactory>(3);
this.certs = new java.security.cert.Certificate[size]; certList = new ArrayList<>(size > 20 ? 20 : size);
} }
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
...@@ -575,13 +576,17 @@ public class CodeSource implements java.io.Serializable { ...@@ -575,13 +576,17 @@ public class CodeSource implements java.io.Serializable {
ois.readFully(encoded); ois.readFully(encoded);
ByteArrayInputStream bais = new ByteArrayInputStream(encoded); ByteArrayInputStream bais = new ByteArrayInputStream(encoded);
try { try {
this.certs[i] = cf.generateCertificate(bais); certList.add(cf.generateCertificate(bais));
} catch (CertificateException ce) { } catch (CertificateException ce) {
throw new IOException(ce.getMessage()); throw new IOException(ce.getMessage());
} }
bais.close(); bais.close();
} }
if (certList != null) {
this.certs = certList.toArray(
new java.security.cert.Certificate[size]);
}
// Deserialize array of code signers (if any) // Deserialize array of code signers (if any)
try { try {
this.signers = ((CodeSigner[])ois.readObject()).clone(); this.signers = ((CodeSigner[])ois.readObject()).clone();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册