diff --git a/src/share/classes/java/lang/reflect/Proxy.java b/src/share/classes/java/lang/reflect/Proxy.java index 20e62b642ca0be3827773ce443a53cb3ce76ee32..7b80e45950388cd1e440219c45c59a123f89a26a 100644 --- a/src/share/classes/java/lang/reflect/Proxy.java +++ b/src/share/classes/java/lang/reflect/Proxy.java @@ -362,12 +362,13 @@ public class Proxy implements java.io.Serializable { Class... interfaces) throws IllegalArgumentException { - SecurityManager sm = System.getSecurityManager(); + final Class[] intfs = interfaces.clone(); + final SecurityManager sm = System.getSecurityManager(); if (sm != null) { - checkProxyAccess(Reflection.getCallerClass(), loader, interfaces); + checkProxyAccess(Reflection.getCallerClass(), loader, intfs); } - return getProxyClass0(loader, interfaces); + return getProxyClass0(loader, intfs); } /* @@ -706,15 +707,16 @@ public class Proxy implements java.io.Serializable { { Objects.requireNonNull(h); + final Class[] intfs = interfaces.clone(); final SecurityManager sm = System.getSecurityManager(); if (sm != null) { - checkProxyAccess(Reflection.getCallerClass(), loader, interfaces); + checkProxyAccess(Reflection.getCallerClass(), loader, intfs); } /* * Look up or generate the designated proxy class. */ - Class cl = getProxyClass0(loader, interfaces); + Class cl = getProxyClass0(loader, intfs); /* * Invoke its constructor with the designated invocation handler.