Hey, I noticed two places in the codebase that could call JDK 9's new method Class.getPackageName().
Would be happy if this is sponsored in case the patch is correct. Cheers, Christoph ====== PATCH ======= diff -r 438e0c9f2f17 src/java.base/share/classes/java/io/ObjectStreamClass.java --- a/src/java.base/share/classes/java/io/ObjectStreamClass.java Mon Oct 30 17:49:33 2017 -0700 +++ b/src/java.base/share/classes/java/io/ObjectStreamClass.java Fri Nov 03 01:47:04 2017 +0100 @@ -1587,11 +1587,7 @@ * Returns package name of given class. */ private static String getPackageName(Class<?> cl) { - String s = cl.getName(); - int i = s.lastIndexOf('['); - i = (i < 0) ? 0 : i + 2; - int j = s.lastIndexOf('.'); - return (i < j) ? s.substring(i, j) : ""; + return cl.getPackageName(); } /** diff -r 438e0c9f2f17 src/java.base/share/classes/java/lang/reflect/Proxy.java --- a/src/java.base/share/classes/java/lang/reflect/Proxy.java Mon Oct 30 17:49:33 2017 -0700 +++ b/src/java.base/share/classes/java/lang/reflect/Proxy.java Fri Nov 03 01:47:04 2017 +0100 @@ -1034,11 +1034,8 @@ // do permission check if the caller is in a different runtime package // of the proxy class - int n = proxyClass.getName().lastIndexOf('.'); - String pkg = (n == -1) ? "" : proxyClass.getName().substring(0, n); - - n = caller.getName().lastIndexOf('.'); - String callerPkg = (n == -1) ? "" : caller.getName().substring(0, n); + String pkg = proxyClass.getPackageName(); + String callerPkg = caller.getPackageName(); if (pcl != ccl || !pkg.equals(callerPkg)) { sm.checkPermission(new ReflectPermission("newProxyInPackage." + pkg));