< prev index next >

src/java.base/share/classes/java/io/ObjectOutputStream.java

Print this page
rev 15365 : imported patch 8163517-Various-cleanup-in-java-io-code

*** 1048,1073 **** } processQueue(Caches.subclassAuditsQueue, Caches.subclassAudits); WeakClassKey key = new WeakClassKey(cl, Caches.subclassAuditsQueue); Boolean result = Caches.subclassAudits.get(key); if (result == null) { ! result = Boolean.valueOf(auditSubclass(cl)); Caches.subclassAudits.putIfAbsent(key, result); } ! if (result.booleanValue()) { ! return; ! } sm.checkPermission(SUBCLASS_IMPLEMENTATION_PERMISSION); } /** * Performs reflective checks on given subclass to verify that it doesn't ! * override security-sensitive non-final methods. Returns true if subclass ! * is "safe", false otherwise. */ ! private static boolean auditSubclass(final Class<?> subcl) { ! Boolean result = AccessController.doPrivileged( new PrivilegedAction<>() { public Boolean run() { for (Class<?> cl = subcl; cl != ObjectOutputStream.class; cl = cl.getSuperclass()) --- 1048,1072 ---- } processQueue(Caches.subclassAuditsQueue, Caches.subclassAudits); WeakClassKey key = new WeakClassKey(cl, Caches.subclassAuditsQueue); Boolean result = Caches.subclassAudits.get(key); if (result == null) { ! result = auditSubclass(cl); Caches.subclassAudits.putIfAbsent(key, result); } ! if (!result) { sm.checkPermission(SUBCLASS_IMPLEMENTATION_PERMISSION); } + } /** * Performs reflective checks on given subclass to verify that it doesn't ! * override security-sensitive non-final methods. Returns TRUE if subclass ! * is "safe", FALSE otherwise. */ ! private static Boolean auditSubclass(Class<?> subcl) { ! return AccessController.doPrivileged( new PrivilegedAction<>() { public Boolean run() { for (Class<?> cl = subcl; cl != ObjectOutputStream.class; cl = cl.getSuperclass())
*** 1086,1096 **** } return Boolean.TRUE; } } ); - return result.booleanValue(); } /** * Clears internal data structures. */ --- 1085,1094 ----
< prev index next >