< prev index next >
src/java.base/share/classes/java/lang/System.java
Print this page
rev 55657 : 8227587: Add internal privileged System.loadLibrary
Reviewed-by: rriggs
*** 2272,2279 ****
--- 2272,2303 ----
}
public void setCause(Throwable t, Throwable cause) {
t.setCause(cause);
}
+
+ public void loadLibrary(Class<?> klass, String library) {
+ assert library.indexOf(java.io.File.separatorChar) < 0 && classStackWalker().getCallerClass() == klass;
+ if (System.getSecurityManager() == null) {
+ ClassLoader.loadLibrary(klass, library, false);
+ } else {
+ AccessController.doPrivileged(
+ new java.security.PrivilegedAction<>() {
+ public Void run() {
+ ClassLoader.loadLibrary(klass, library, false);
+ return null;
+ }
+ });
+ }
+ }
+
+ private StackWalker classStackWalker() {
+ return AccessController.doPrivileged(
+ new java.security.PrivilegedAction<StackWalker>() {
+ public StackWalker run() {
+ return StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE);
+ }
+ });
+ }
});
}
}
< prev index next >