aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/com/jogamp/gluegen
diff options
context:
space:
mode:
Diffstat (limited to 'src/java/com/jogamp/gluegen')
-rw-r--r--src/java/com/jogamp/gluegen/runtime/FunctionAddressResolver.java10
-rw-r--r--src/java/com/jogamp/gluegen/runtime/ProcAddressTable.java5
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);
}
}