From b014a46d18d593136640c928f790494fc33a6d1e Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Wed, 9 Feb 2011 03:53:21 +0100 Subject: Add privileged decoration around library loading --- make/joal-common-CustomJavaCode.java | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) (limited to 'make/joal-common-CustomJavaCode.java') diff --git a/make/joal-common-CustomJavaCode.java b/make/joal-common-CustomJavaCode.java index 61c6d0c..6f77146 100644 --- a/make/joal-common-CustomJavaCode.java +++ b/make/joal-common-CustomJavaCode.java @@ -2,21 +2,27 @@ static final DynamicLibraryBundle alDynamicLookupHelper; private static final ALProcAddressTable alProcAddressTable; static { - alProcAddressTable = new ALProcAddressTable(); - if(null==alProcAddressTable) { - throw new RuntimeException("Couldn't instantiate ALProcAddressTable"); - } - alDynamicLookupHelper = new DynamicLibraryBundle(new ALDynamicLibraryBundleInfo()); - if(null==alDynamicLookupHelper) { - throw new RuntimeException("Null ALDynamicLookupHelper"); - } - if(!alDynamicLookupHelper.isToolLibLoaded()) { - throw new RuntimeException("Couln't load native AL library"); - } - if(!alDynamicLookupHelper.isLibComplete()) { - throw new RuntimeException("Couln't load native AL/JNI glue library"); - } - alProcAddressTable.reset(alDynamicLookupHelper); + alProcAddressTable = new ALProcAddressTable(); + if(null==alProcAddressTable) { + throw new RuntimeException("Couldn't instantiate ALProcAddressTable"); + } + + alDynamicLookupHelper = (DynamicLibraryBundle) + AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + return new DynamicLibraryBundle(new ALDynamicLibraryBundleInfo()); + } + }); + if(null==alDynamicLookupHelper) { + throw new RuntimeException("Null ALDynamicLookupHelper"); + } + if(!alDynamicLookupHelper.isToolLibLoaded()) { + throw new RuntimeException("Couln't load native AL library"); + } + if(!alDynamicLookupHelper.isLibComplete()) { + throw new RuntimeException("Couln't load native AL/JNI glue library"); + } + alProcAddressTable.reset(alDynamicLookupHelper); } public static ALProcAddressTable getALProcAddressTable() { return alProcAddressTable; } -- cgit v1.2.3