@@ -88,11 +88,8 @@ string computeArgumentPath(string parameter, Function function) {
88
88
result = "Argument[" + concat ( computeArgumentPosition ( parameter , function ) , "," ) + "]"
89
89
}
90
90
91
- bindingset [ parameter, function]
92
91
pragma [ inline]
93
- string computeReturnPath (
94
- DataFlow:: Node argument , string parameter , Function function , DataFlow:: Node outNode
95
- ) {
92
+ string computeReturnPath ( DataFlow:: Node argument , DataFlow:: Node outNode ) {
96
93
outNode .( DataFlow:: CallCfgNode ) .getArg ( _) = argument and
97
94
result = "ReturnValue"
98
95
or
@@ -108,6 +105,8 @@ string computeReturnPath(
108
105
call .getArg ( _) = argument
109
106
or
110
107
call .getArgByName ( _) = argument
108
+ or
109
+ call .getObject ( ) = argument
111
110
) and
112
111
result = "Argument[self]"
113
112
)
@@ -126,9 +125,9 @@ string madSummary(
126
125
argumentPath = "Argument[?]"
127
126
) and
128
127
(
129
- returnPath = computeReturnPath ( argument , parameter , function , outNode )
128
+ returnPath = computeReturnPath ( argument , outNode )
130
129
or
131
- not exists ( computeReturnPath ( argument , parameter , function , outNode ) ) and
130
+ not exists ( computeReturnPath ( argument , outNode ) ) and
132
131
returnPath =
133
132
argument .getLocation ( ) .toString ( ) + ": " + argument .toString ( ) + " -> " + outNode .toString ( )
134
133
) and
@@ -153,13 +152,18 @@ abstract class EntryPointsByQuery extends string {
153
152
string alreadyModeled , string madSummary
154
153
) {
155
154
exists ( DataFlow:: ParameterNode parameter , Function function |
156
- parameterName = parameter .getParameter ( ) .getName ( ) and
157
- functionName = computeFunctionName ( function )
158
- |
155
+ parameter .getScope ( ) = function and
159
156
this .subpath ( argument , parameter , outNode ) and
160
157
not inStdLib ( argument ) and
161
- inStdLib ( parameter ) and
162
- function = parameter .getScope ( ) and
158
+ inStdLib ( parameter )
159
+ |
160
+ parameterName = parameter .getParameter ( ) .getName ( ) and
161
+ (
162
+ functionName = computeFunctionName ( function )
163
+ or
164
+ not exists ( computeFunctionName ( function ) ) and
165
+ functionName = "unknown function: " + function .toString ( )
166
+ ) and
163
167
alreadyModeled = stepsTo ( argument , outNode ) and
164
168
(
165
169
madSummary = madSummary ( argument , parameterName , function , outNode )
0 commit comments