diff options
Diffstat (limited to 'src/java/com/jogamp/gluegen')
-rw-r--r-- | src/java/com/jogamp/gluegen/runtime/FunctionAddressResolver.java | 10 | ||||
-rw-r--r-- | src/java/com/jogamp/gluegen/runtime/ProcAddressTable.java | 5 |
2 files changed, 9 insertions, 6 deletions
diff --git a/src/java/com/jogamp/gluegen/runtime/FunctionAddressResolver.java b/src/java/com/jogamp/gluegen/runtime/FunctionAddressResolver.java index 4fc40a4..ea7cfa2 100644 --- a/src/java/com/jogamp/gluegen/runtime/FunctionAddressResolver.java +++ b/src/java/com/jogamp/gluegen/runtime/FunctionAddressResolver.java @@ -32,16 +32,20 @@ package com.jogamp.gluegen.runtime; import com.jogamp.common.os.DynamicLookupHelper; +import com.jogamp.common.util.SecurityUtil; /** - * - * @author Michael Bien + * @author Michael Bien, et.al. */ public interface FunctionAddressResolver { /** * Resolves the name of the function bound to the method and returns the address. + * <p> + * Implementation shall ensure {@link SecurityUtil#checkLinkPermission(String)} is performed. + * </p> + * @throws SecurityException if user is not granted access for the library set. */ - public long resolve(String name, DynamicLookupHelper lookup); + public long resolve(String name, DynamicLookupHelper lookup) throws SecurityException; } diff --git a/src/java/com/jogamp/gluegen/runtime/ProcAddressTable.java b/src/java/com/jogamp/gluegen/runtime/ProcAddressTable.java index d910f7b..03ed5c1 100644 --- a/src/java/com/jogamp/gluegen/runtime/ProcAddressTable.java +++ b/src/java/com/jogamp/gluegen/runtime/ProcAddressTable.java @@ -167,7 +167,6 @@ public abstract class ProcAddressTable { * @throws SecurityException if user is not granted access for all libraries. */ public void initEntry(final String name, final DynamicLookupHelper lookup) throws SecurityException, IllegalArgumentException { - SecurityUtil.checkAllLinkPermission(); final Field addressField = fieldForFunction(name); addressField.setAccessible(true); setEntry(addressField, name, lookup); @@ -176,7 +175,7 @@ public abstract class ProcAddressTable { private final void setEntry(final Field addressField, final String funcName, final DynamicLookupHelper lookup) throws SecurityException { try { assert (addressField.getType() == Long.TYPE); - final long newProcAddress = resolver.resolve(funcName, lookup); + final long newProcAddress = resolver.resolve(funcName, lookup); // issues SecurityUtil.checkLinkPermission(String) addressField.setLong(this, newProcAddress); if (DEBUG) { getDebugOutStream().println(" " + addressField.getName() + " -> 0x" + Long.toHexString(newProcAddress)); @@ -345,7 +344,7 @@ public abstract class ProcAddressTable { private static class One2OneResolver implements FunctionAddressResolver { @Override - public long resolve(final String name, final DynamicLookupHelper lookup) { + public long resolve(final String name, final DynamicLookupHelper lookup) throws SecurityException { return lookup.dynamicLookupFunction(name); } } |