Skip to content

Commit ad4359e

Browse files
committed
python: more robust programming
also remove unused parameters
1 parent 8a55580 commit ad4359e

File tree

1 file changed

+15
-11
lines changed

1 file changed

+15
-11
lines changed

Diff for: python/ql/src/meta/StdLib/FindUses.qll

+15-11
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,8 @@ string computeArgumentPath(string parameter, Function function) {
8888
result = "Argument[" + concat(computeArgumentPosition(parameter, function), ",") + "]"
8989
}
9090

91-
bindingset[parameter, function]
9291
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) {
9693
outNode.(DataFlow::CallCfgNode).getArg(_) = argument and
9794
result = "ReturnValue"
9895
or
@@ -108,6 +105,8 @@ string computeReturnPath(
108105
call.getArg(_) = argument
109106
or
110107
call.getArgByName(_) = argument
108+
or
109+
call.getObject() = argument
111110
) and
112111
result = "Argument[self]"
113112
)
@@ -126,9 +125,9 @@ string madSummary(
126125
argumentPath = "Argument[?]"
127126
) and
128127
(
129-
returnPath = computeReturnPath(argument, parameter, function, outNode)
128+
returnPath = computeReturnPath(argument, outNode)
130129
or
131-
not exists(computeReturnPath(argument, parameter, function, outNode)) and
130+
not exists(computeReturnPath(argument, outNode)) and
132131
returnPath =
133132
argument.getLocation().toString() + ": " + argument.toString() + " -> " + outNode.toString()
134133
) and
@@ -153,13 +152,18 @@ abstract class EntryPointsByQuery extends string {
153152
string alreadyModeled, string madSummary
154153
) {
155154
exists(DataFlow::ParameterNode parameter, Function function |
156-
parameterName = parameter.getParameter().getName() and
157-
functionName = computeFunctionName(function)
158-
|
155+
parameter.getScope() = function and
159156
this.subpath(argument, parameter, outNode) and
160157
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
163167
alreadyModeled = stepsTo(argument, outNode) and
164168
(
165169
madSummary = madSummary(argument, parameterName, function, outNode)

0 commit comments

Comments
 (0)