@@ -33,7 +33,7 @@ class BytecodeLoader extends RefType {
33
33
}
34
34
35
35
/** Holds if a Jython expression if evaluated, compiled or executed. */
36
- predicate runCode ( MethodAccess ma , Expr sink ) {
36
+ predicate runsCode ( MethodAccess ma , Expr sink ) {
37
37
exists ( Method m | m = ma .getMethod ( ) |
38
38
m instanceof InterpretExprMethod and
39
39
sink = ma .getArgument ( 0 )
@@ -83,17 +83,15 @@ predicate compile(MethodAccess ma, Expr sink) {
83
83
84
84
/** An expression loaded by Jython. */
85
85
class CodeInjectionSink extends DataFlow:: ExprNode {
86
+ MethodAccess methodAccess ;
87
+
86
88
CodeInjectionSink ( ) {
87
- runCode ( _ , this .getExpr ( ) ) or
88
- loadsClass ( _ , this .getExpr ( ) ) or
89
- compile ( _ , this .getExpr ( ) )
89
+ runsCode ( methodAccess , this .getExpr ( ) ) or
90
+ loadsClass ( methodAccess , this .getExpr ( ) ) or
91
+ compile ( methodAccess , this .getExpr ( ) )
90
92
}
91
93
92
- MethodAccess getMethodAccess ( ) {
93
- runCode ( result , this .getExpr ( ) ) or
94
- loadsClass ( result , this .getExpr ( ) ) or
95
- compile ( result , this .getExpr ( ) )
96
- }
94
+ MethodAccess getMethodAccess ( ) { result = methodAccess }
97
95
}
98
96
99
97
/**
0 commit comments