Skip to content

Commit f4e064d

Browse files
committed
fixes JSR/RET for old jar when hook class
1 parent 84d586d commit f4e064d

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

dongtai-core/src/main/java/io/dongtai/iast/core/bytecode/IastClassFileTransformer.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,9 @@ public byte[] transform(final ClassLoader loader,
119119
|| internalClassName.startsWith("io/dongtai/")
120120
|| internalClassName.startsWith("com/secnium/iast/")
121121
|| internalClassName.startsWith("java/lang/iast/")
122-
|| internalClassName.startsWith("cn/huoxian/iast/")) {
122+
|| internalClassName.startsWith("cn/huoxian/iast/")
123+
|| internalClassName.startsWith("META-INF/")
124+
|| "module-info".equals(internalClassName)) {
123125
return null;
124126
}
125127

dongtai-core/src/main/java/io/dongtai/iast/core/bytecode/enhance/plugin/core/DispatchClassPlugin.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,17 @@ public ClassVisitor dispatch(ClassVisitor classVisitor, ClassContext classContex
3636
}
3737

3838
classContext.setMatchedClassName(matchedClassName);
39-
return new ClassVisit(classVisitor, classContext, policy);
39+
ClassVisit cv = new ClassVisit(classVisitor, classContext, policy);
40+
if (cv.isNeedTransform()) {
41+
return cv;
42+
}
43+
return classVisitor;
4044
}
4145

4246
public class ClassVisit extends AbstractClassVisitor {
4347
private int classVersion;
4448
private final MethodAdapter[] methodAdapters;
49+
private boolean needTransform;
4550

4651
ClassVisit(ClassVisitor classVisitor, ClassContext classContext, Policy policy) {
4752
super(classVisitor, classContext, policy);
@@ -52,6 +57,10 @@ public class ClassVisit extends AbstractClassVisitor {
5257
};
5358
}
5459

60+
public boolean isNeedTransform() {
61+
return this.needTransform;
62+
}
63+
5564
@Override
5665
public void visit(int version, int access, String name, String signature, String superName,
5766
String[] interfaces) {
@@ -88,6 +97,7 @@ public MethodVisitor visitMethod(final int access, final String name, final Stri
8897
}
8998

9099
if (methodIsTransformed) {
100+
this.needTransform = true;
91101
DongTaiLog.trace("rewrite method {} for listener[class={}]", matchedSignature, context.getClassName());
92102
}
93103

0 commit comments

Comments
 (0)