Skip to content

Instantly share code, notes, and snippets.

@trask
Created June 13, 2014 08:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save trask/bee81e153cf17e1e945a to your computer and use it in GitHub Desktop.
Save trask/bee81e153cf17e1e945a to your computer and use it in GitHub Desktop.
ClassFileTransformer.transform() can be passed null className
import java.lang.instrument.Instrumentation;
public class Agent {
public static void premain(String agentArgs, Instrumentation instrumentation) {
instrumentation.addTransformer(new Transformer());
}
}
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
public class Main {
public static void main(String... args) throws Exception {
MethodType mt = MethodType.methodType(String.class);
MethodHandle mh = MethodHandles.lookup().findVirtual(Object.class, "toString", mt);
}
}
Premain-Class: Agent
className is null
className is null
className is null
className is null
className is null
className is null
#!/bin/sh
javac Agent.java Transformer.java Main.java
jar cmf MANIFEST.MF agent.jar Agent.class Transformer.class Main.class
java -javaagent:agent.jar Main
import java.lang.instrument.ClassFileTransformer;
import java.lang.instrument.IllegalClassFormatException;
import java.security.ProtectionDomain;
public class Transformer implements ClassFileTransformer {
@Override
public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined,
ProtectionDomain protectionDomain, byte[] classfileBuffer)
throws IllegalClassFormatException {
if (className == null) {
System.out.println("className is null");
}
return null;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment