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();
         }
     }