Skip to content

Commit 8f2325e

Browse files
scottmarlowbeikov
authored andcommitted
HHH-15655 use privileged operation when defining classes
Signed-off-by: Scott Marlow <[email protected]>
1 parent 11b968a commit 8f2325e

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

hibernate-core/src/main/java/org/hibernate/bytecode/internal/bytebuddy/ByteBuddyState.java

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -192,10 +192,24 @@ private Class<?> load(Class<?> referenceClass, TypeCache<TypeCache.SimpleKey> ca
192192
return cache.findOrInsert(
193193
referenceClass.getClassLoader(),
194194
cacheKey,
195-
() -> make( makeProxyFunction.apply( byteBuddy ) )
196-
.load( referenceClass.getClassLoader(), resolveClassLoadingStrategy( referenceClass ) )
197-
.getLoaded(),
198-
cache );
195+
() -> {
196+
PrivilegedAction<Class<?>> delegateToPrivilegedAction = new PrivilegedAction<Class<?>>() {
197+
@Override
198+
public Class<?> run() {
199+
return make( makeProxyFunction.apply( byteBuddy ) )
200+
.load(
201+
referenceClass.getClassLoader(),
202+
resolveClassLoadingStrategy( referenceClass )
203+
)
204+
.getLoaded();
205+
}
206+
};
207+
return SystemSecurityManager.isSecurityManagerEnabled() ? AccessController.doPrivileged(
208+
delegateToPrivilegedAction ) :
209+
delegateToPrivilegedAction.run();
210+
},
211+
cache
212+
);
199213
}
200214

201215
public Unloaded<?> make(Function<ByteBuddy, DynamicType.Builder<?>> makeProxyFunction) {

0 commit comments

Comments
 (0)