mirror of
https://github.com/elastic/elasticsearch.git
synced 2025-04-24 15:17:30 -04:00
Merge main into multi-project
This commit is contained in:
commit
e790688377
284 changed files with 6174 additions and 1632 deletions
|
@ -55,7 +55,7 @@ public class RestEntitlementsCheckAction extends BaseRestHandler {
|
|||
entry("runtime_exit", deniedToPlugins(RestEntitlementsCheckAction::runtimeExit)),
|
||||
entry("runtime_halt", deniedToPlugins(RestEntitlementsCheckAction::runtimeHalt)),
|
||||
entry("create_classloader", forPlugins(RestEntitlementsCheckAction::createClassLoader)),
|
||||
// entry("processBuilder_start", deniedToPlugins(RestEntitlementsCheckAction::processBuilder_start)),
|
||||
entry("processBuilder_start", deniedToPlugins(RestEntitlementsCheckAction::processBuilder_start)),
|
||||
entry("processBuilder_startPipeline", deniedToPlugins(RestEntitlementsCheckAction::processBuilder_startPipeline))
|
||||
);
|
||||
|
||||
|
@ -78,7 +78,11 @@ public class RestEntitlementsCheckAction extends BaseRestHandler {
|
|||
}
|
||||
|
||||
private static void processBuilder_start() {
|
||||
// TODO: processBuilder().start();
|
||||
try {
|
||||
new ProcessBuilder("").start();
|
||||
} catch (IOException e) {
|
||||
throw new IllegalStateException(e);
|
||||
}
|
||||
}
|
||||
|
||||
private static void processBuilder_startPipeline() {
|
||||
|
|
|
@ -34,6 +34,7 @@ import java.lang.reflect.InvocationTargetException;
|
|||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
@ -72,17 +73,17 @@ public class EntitlementInitialization {
|
|||
|
||||
Instrumenter instrumenter = INSTRUMENTER_FACTORY.newInstrumenter(EntitlementChecker.class, checkMethods);
|
||||
inst.addTransformer(new Transformer(instrumenter, classesToTransform), true);
|
||||
// TODO: should we limit this array somehow?
|
||||
var classesToRetransform = classesToTransform.stream().map(EntitlementInitialization::internalNameToClass).toArray(Class[]::new);
|
||||
inst.retransformClasses(classesToRetransform);
|
||||
inst.retransformClasses(findClassesToRetransform(inst.getAllLoadedClasses(), classesToTransform));
|
||||
}
|
||||
|
||||
private static Class<?> internalNameToClass(String internalName) {
|
||||
try {
|
||||
return Class.forName(internalName.replace('/', '.'), false, ClassLoader.getPlatformClassLoader());
|
||||
} catch (ClassNotFoundException e) {
|
||||
throw new RuntimeException(e);
|
||||
private static Class<?>[] findClassesToRetransform(Class<?>[] loadedClasses, Set<String> classesToTransform) {
|
||||
List<Class<?>> retransform = new ArrayList<>();
|
||||
for (Class<?> loadedClass : loadedClasses) {
|
||||
if (classesToTransform.contains(loadedClass.getName().replace(".", "/"))) {
|
||||
retransform.add(loadedClass);
|
||||
}
|
||||
}
|
||||
return retransform.toArray(new Class<?>[0]);
|
||||
}
|
||||
|
||||
private static PolicyManager createPolicyManager() throws IOException {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue