8005598: (reopened) Need to clone array of input/output parameters
Reviewed-by: weijun
diff --git a/jdk/src/share/classes/com/sun/jndi/dns/DnsContext.java b/jdk/src/share/classes/com/sun/jndi/dns/DnsContext.java
index 24f7343..3c0b6a5 100644
--- a/jdk/src/share/classes/com/sun/jndi/dns/DnsContext.java
+++ b/jdk/src/share/classes/com/sun/jndi/dns/DnsContext.java
@@ -102,7 +102,7 @@
this.domain = new DnsName(domain.endsWith(".")
? domain
: domain + ".");
- this.servers = servers;
+ this.servers = (servers == null) ? null : servers.clone();
this.environment = (Hashtable<Object,Object>) environment.clone();
envShared = false;
parentIsDns = false;
@@ -129,11 +129,11 @@
* no conflict.
*/
private DnsContext(DnsContext ctx) {
- environment = ctx.environment;
+ environment = ctx.environment; // shared environment, copy-on-write
envShared = ctx.envShared = true;
parentIsDns = ctx.parentIsDns;
domain = ctx.domain;
- servers = ctx.servers;
+ servers = ctx.servers; // shared servers, no write operation
resolver = ctx.resolver;
authoritative = ctx.authoritative;
recursion = ctx.recursion;
diff --git a/jdk/src/share/classes/com/sun/jndi/ldap/BasicControl.java b/jdk/src/share/classes/com/sun/jndi/ldap/BasicControl.java
index d068704..007a40c 100644
--- a/jdk/src/share/classes/com/sun/jndi/ldap/BasicControl.java
+++ b/jdk/src/share/classes/com/sun/jndi/ldap/BasicControl.java
@@ -81,7 +81,7 @@
this.id = id;
this.criticality = criticality;
if (value != null) {
- this.value = value;
+ this.value = value.clone();
}
}