Skip to content

Commit 5e23da8

Browse files
committed
rename named-parameters to keyword-parameters
1 parent e434f07 commit 5e23da8

File tree

4 files changed

+28
-26
lines changed

4 files changed

+28
-26
lines changed

python/ql/lib/semmle/python/ApiGraphs.qll

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -126,12 +126,14 @@ module API {
126126
Node getParameter(int i) { result = this.getASuccessor(Label::parameter(i)) }
127127

128128
/**
129-
* Gets the node representing the parameter named `name` of the function represented by this node.
129+
* Gets the node representing the keyword parameter `name` of the function represented by this node.
130130
*
131131
* This predicate may have multiple results when there are multiple invocations of this API component.
132132
* Consider using `getAnInvocation()` if there is a need to distingiush between individual calls.
133133
*/
134-
Node getNamedParameter(string name) { result = this.getASuccessor(Label::namedParameter(name)) }
134+
Node getKeywordParameter(string name) {
135+
result = this.getASuccessor(Label::keywordParameter(name))
136+
}
135137

136138
/**
137139
* Gets the number of parameters of the function represented by this node.
@@ -296,7 +298,7 @@ module API {
296298
* Can be used to reason about calls to an external API in which the correlation between
297299
* parameters and/or return values must be retained.
298300
*
299-
* The member predicates `getParameter`, `getNamedParameter`, `getReturn`, and `getInstance` mimic
301+
* The member predicates `getParameter`, `getKeywordParameter`, `getReturn`, and `getInstance` mimic
300302
* the corresponding predicates from `API::Node`. These are guaranteed to exist and be unique to this call.
301303
*/
302304
class CallNode extends DataFlow::CallCfgNode {
@@ -323,22 +325,22 @@ module API {
323325
/** Gets the API node for the last parameter of this invocation. */
324326
Node getLastParameter() { result = this.getParameter(max(int i | exists(this.getArg(i)))) }
325327

326-
/** Gets the API node for the parameter named `name` of this invocation. */
327-
Node getNamedParameter(string name) {
328-
result = callee.getNamedParameter(name) and
329-
result = this.getANamedParameterCandidate(name)
328+
/** Gets the API node for the keyword parameter `name` of this invocation. */
329+
Node getKeywordParameter(string name) {
330+
result = callee.getKeywordParameter(name) and
331+
result = this.getAKeywordParameterCandidate(name)
330332
}
331333

332-
/** Gets the API node for the parameter that has index `i` or is named `name`. */
334+
/** Gets the API node for the parameter that has index `i` or has keyword `name`. */
333335
bindingset[i, name]
334336
Node getParameter(int i, string name) {
335337
result = this.getParameter(i)
336338
or
337-
result = this.getNamedParameter(name)
339+
result = this.getKeywordParameter(name)
338340
}
339341

340342
pragma[noinline]
341-
private Node getANamedParameterCandidate(string name) {
343+
private Node getAKeywordParameterCandidate(string name) {
342344
result.getARhs() = this.getArgByName(name)
343345
}
344346

@@ -597,7 +599,7 @@ module API {
597599
)
598600
or
599601
exists(string name |
600-
lbl = Label::namedParameter(name) and
602+
lbl = Label::keywordParameter(name) and
601603
ref.asExpr() = fn.getInnerScope().getArgByName(name)
602604
)
603605
)
@@ -652,7 +654,7 @@ module API {
652654
/**
653655
* Holds if `arg` is passed as an argument to a use of `base`.
654656
*
655-
* `lbl` is represents which parameter of the function was passed. Either a numbered parameter, or a named parameter.
657+
* `lbl` is represents which parameter of the function was passed. Either a numbered parameter, or a keyword parameter.
656658
*
657659
* The receiver is considered to be argument -1.
658660
*/
@@ -665,7 +667,7 @@ module API {
665667
arg = pred.getACall().getArg(i)
666668
)
667669
or
668-
exists(string name | lbl = Label::namedParameter(name) |
670+
exists(string name | lbl = Label::keywordParameter(name) |
669671
arg = pred.getACall().getArgByName(name)
670672
)
671673
)
@@ -778,7 +780,7 @@ module API {
778780
or
779781
exists(any(py::Function f).getArg(i))
780782
} or
781-
MkLabelNamedParameter(string name) {
783+
MkLabelKeywordParameter(string name) {
782784
exists(any(DataFlow::CallCfgNode c).getArgByName(name))
783785
or
784786
exists(any(py::Function f).getArgByName(name))
@@ -830,13 +832,13 @@ module API {
830832
int getIndex() { result = i }
831833
}
832834

833-
/** A label for a named parameter `name`. */
834-
class LabelNamedParameter extends ApiLabel {
835+
/** A label for a keyword parameter `name`. */
836+
class LabelKeywordParameter extends ApiLabel {
835837
string name;
836838

837-
LabelNamedParameter() { this = MkLabelNamedParameter(name) }
839+
LabelKeywordParameter() { this = MkLabelKeywordParameter(name) }
838840

839-
override string toString() { result = "getNamedParameter(\"" + name + "\")" }
841+
override string toString() { result = "getKeywordParameter(\"" + name + "\")" }
840842

841843
/** Gets the name of the parameter for this label. */
842844
string getName() { result = name }
@@ -884,8 +886,8 @@ module API {
884886
/** Gets the `parameter` edge label for parameter `i`. */
885887
LabelParameter parameter(int i) { result.getIndex() = i }
886888

887-
/** Gets the `parameter` edge label for the named parameter `name`. */
888-
LabelNamedParameter namedParameter(string name) { result.getName() = name }
889+
/** Gets the `parameter` edge label for the keyword parameter `name`. */
890+
LabelKeywordParameter keywordParameter(string name) { result.getName() = name }
889891

890892
/** Gets the `return` edge label. */
891893
LabelReturn return() { any() }

python/ql/lib/semmle/python/frameworks/Requests.qll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ private module Requests {
5757
override predicate disablesCertificateValidation(
5858
DataFlow::Node disablingNode, DataFlow::Node argumentOrigin
5959
) {
60-
disablingNode = this.getNamedParameter("verify").getARhs() and
61-
argumentOrigin = this.getNamedParameter("verify").getAValueReachingRhs() and
60+
disablingNode = this.getKeywordParameter("verify").getARhs() and
61+
argumentOrigin = this.getKeywordParameter("verify").getAValueReachingRhs() and
6262
argumentOrigin.asExpr().(ImmutableLiteral).booleanValue() = false and
6363
not argumentOrigin.asExpr() instanceof None
6464
}

python/ql/src/Security/CWE-295/RequestWithoutValidation.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ from API::CallNode call, DataFlow::Node falseyOrigin, string verb
1919
where
2020
verb = HTTP::httpVerbLower() and
2121
call = API::moduleImport("requests").getMember(verb).getACall() and
22-
falseyOrigin = call.getNamedParameter("verify").getAValueReachingRhs() and
22+
falseyOrigin = call.getKeywordParameter("verify").getAValueReachingRhs() and
2323
// requests treats `None` as the default and all other "falsey" values as `False`.
2424
falseyOrigin.asExpr().(ImmutableLiteral).booleanValue() = false and
2525
not falseyOrigin.asExpr() instanceof None

python/ql/test/library-tests/ApiGraphs/py3/deftest1.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,15 @@ def callback4(x): #$ use=moduleImport("mypkg").getMember("foo").getMember("quack
3636

3737
def namedCallback(myName, otherName):
3838
# Using named parameters:
39-
myName() #$ use=moduleImport("mypkg").getMember("foo").getMember("blob").getParameter(0).getNamedParameter("myName").getReturn()
40-
otherName() #$ use=moduleImport("mypkg").getMember("foo").getMember("blob").getParameter(0).getNamedParameter("otherName").getReturn()
39+
myName() #$ use=moduleImport("mypkg").getMember("foo").getMember("blob").getParameter(0).getKeywordParameter("myName").getReturn()
40+
otherName() #$ use=moduleImport("mypkg").getMember("foo").getMember("blob").getParameter(0).getKeywordParameter("otherName").getReturn()
4141
# Using numbered parameters:
4242
myName() #$ use=moduleImport("mypkg").getMember("foo").getMember("blob").getParameter(0).getParameter(0).getReturn()
4343
otherName() #$ use=moduleImport("mypkg").getMember("foo").getMember("blob").getParameter(0).getParameter(1).getReturn()
4444

4545
foo.blob(namedCallback) #$ use=moduleImport("mypkg").getMember("foo").getMember("blob").getReturn()
4646

47-
foo.named(myName = 2) #$ def=moduleImport("mypkg").getMember("foo").getMember("named").getNamedParameter("myName")
47+
foo.named(myName = 2) #$ def=moduleImport("mypkg").getMember("foo").getMember("named").getKeywordParameter("myName")
4848

4949

5050
def recusisionCallback(x):

0 commit comments

Comments
 (0)