File tree 1 file changed +18
-2
lines changed
src/main/java/com/fasterxml/jackson/databind
1 file changed +18
-2
lines changed Original file line number Diff line number Diff line change 3
3
import java .io .*;
4
4
import java .lang .reflect .Type ;
5
5
import java .net .URL ;
6
+ import java .security .AccessController ;
7
+ import java .security .PrivilegedAction ;
6
8
import java .text .DateFormat ;
7
9
import java .util .*;
8
10
import java .util .concurrent .ConcurrentHashMap ;
@@ -967,14 +969,28 @@ public static List<Module> findModules() {
967
969
public static List <Module > findModules (ClassLoader classLoader )
968
970
{
969
971
ArrayList <Module > modules = new ArrayList <Module >();
970
- ServiceLoader <Module > loader = (classLoader == null ) ?
971
- ServiceLoader .load (Module .class ) : ServiceLoader .load (Module .class , classLoader );
972
+ ServiceLoader <Module > loader = secureGetServiceLoader (Module .class , classLoader );
972
973
for (Module module : loader ) {
973
974
modules .add (module );
974
975
}
975
976
return modules ;
976
977
}
977
978
979
+ private static <T > ServiceLoader <T > secureGetServiceLoader (final Class <T > clazz , final ClassLoader classLoader ) {
980
+ final SecurityManager sm = System .getSecurityManager ();
981
+ if (sm == null ) {
982
+ return (classLoader == null ) ?
983
+ ServiceLoader .load (clazz ) : ServiceLoader .load (clazz , classLoader );
984
+ }
985
+ return AccessController .doPrivileged (new PrivilegedAction <ServiceLoader <T >>() {
986
+ @ Override
987
+ public ServiceLoader <T > run () {
988
+ return (classLoader == null ) ?
989
+ ServiceLoader .load (clazz ) : ServiceLoader .load (clazz , classLoader );
990
+ }
991
+ });
992
+ }
993
+
978
994
/**
979
995
* Convenience method that is functionally equivalent to:
980
996
*<code>
You can’t perform that action at this time.
0 commit comments