Skip to content

Commit e3b3f0b

Browse files
committed
PS: Consistent lower casing in api graphs, control-flow graph, and dataflow nodes.
1 parent 3880d9f commit e3b3f0b

File tree

4 files changed

+38
-10
lines changed

4 files changed

+38
-10
lines changed

powershell/ql/lib/semmle/code/powershell/ApiGraphs.qll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -563,15 +563,15 @@ module API {
563563
)
564564
or
565565
exists(DataFlow::AutomaticVariableNode automatic |
566-
automatic.getName() = name and
566+
automatic.getLowerCaseName() = name and
567567
succ = getForwardStartNode(automatic)
568568
)
569569
or
570570
succ = getAnImplicitRootMember(name)
571571
)
572572
or
573573
exists(DataFlow::QualifiedTypeNameNode typeName |
574-
typeName.getName() = name and
574+
typeName.getLowerCaseName() = name and
575575
pred = MkNamespaceOfTypeNameNode(typeName) and
576576
succ = getForwardStartNode(typeName)
577577
)

powershell/ql/lib/semmle/code/powershell/controlflow/CfgNodes.qll

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -587,7 +587,15 @@ module ExprNodes {
587587

588588
override ObjectCreation getExpr() { result = e }
589589

590-
string getConstructedTypeName() { result = this.getExpr().getConstructedTypeName() }
590+
string getLowerCaseConstructedTypeName() {
591+
result = this.getExpr().getLowerCaseConstructedTypeName()
592+
}
593+
594+
bindingset[result]
595+
pragma[inline_late]
596+
string getAConstructedTypeName() {
597+
result.toLowerCase() = this.getLowerCaseConstructedTypeName()
598+
}
591599

592600
ExprCfgNode getConstructedTypeExpr() {
593601
e.hasCfgChild(this.getExpr().getConstructedTypeExpr(), this, result)
@@ -717,7 +725,11 @@ module ExprNodes {
717725

718726
override TypeNameExpr getExpr() { result = e }
719727

720-
string getName() { result = e.getName() }
728+
bindingset[result]
729+
pragma[inline_late]
730+
string getAName() { result = e.getAName() }
731+
732+
string getLowerCaseName() { result = e.getLowerCaseName() }
721733

722734
string getNamespace() { result = e.getNamespace() }
723735

@@ -1118,7 +1130,11 @@ module ExprNodes {
11181130

11191131
override AutomaticVariable getExpr() { result = e }
11201132

1121-
string getName() { result = e.getName() }
1133+
bindingset[result]
1134+
pragma[inline_late]
1135+
string getAName() { result = e.getAName() }
1136+
1137+
string getLowerCaseName() { result = e.getLowerCaseName() }
11221138
}
11231139
}
11241140

powershell/ql/lib/semmle/code/powershell/dataflow/internal/DataFlowDispatch.qll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,10 +159,10 @@ private predicate localFlowStep(Node nodeFrom, Node nodeTo, StepSummary summary)
159159

160160
private module TrackInstanceInput implements CallGraphConstruction::InputSig {
161161
private predicate start0(Node start, string typename, boolean exact) {
162-
start.(ObjectCreationNode).getObjectCreationNode().getConstructedTypeName() = typename and
162+
start.(ObjectCreationNode).getObjectCreationNode().getLowerCaseConstructedTypeName() = typename and
163163
exact = true
164164
or
165-
start.asExpr().(CfgNodes::ExprNodes::TypeNameExprCfgNode).getName() = typename and
165+
start.asExpr().(CfgNodes::ExprNodes::TypeNameExprCfgNode).getLowerCaseName() = typename and
166166
exact = true
167167
or
168168
start.asParameter().getStaticType() = typename and

powershell/ql/lib/semmle/code/powershell/dataflow/internal/DataFlowPublic.qll

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,11 @@ class ObjectCreationNode extends ExprNode {
495495
*/
496496
Node getConstructedTypeNode() { result.asExpr() = objectCreation.getConstructedTypeExpr() }
497497

498-
string getConstructedTypeName() { result = this.getObjectCreationNode().getConstructedTypeName() }
498+
bindingset[result]
499+
pragma[inline_late]
500+
string getAConstructedTypeName() {
501+
result = this.getObjectCreationNode().getAConstructedTypeName()
502+
}
499503
}
500504

501505
/** A call, viewed as a node in a data flow graph. */
@@ -567,7 +571,11 @@ class TypeNameNode extends ExprNode {
567571

568572
override CfgNodes::ExprNodes::TypeNameExprCfgNode getExprNode() { result = n }
569573

570-
string getName() { result = n.getName() }
574+
bindingset[result]
575+
pragma[inline_late]
576+
string getAName() { result = n.getAName() }
577+
578+
string getLowerCaseName() { result = n.getLowerCaseName() }
571579

572580
predicate isQualified() { n.isQualified() }
573581

@@ -593,5 +601,9 @@ class AutomaticVariableNode extends ExprNode {
593601

594602
final override CfgNodes::ExprNodes::AutomaticVariableCfgNode getExprNode() { result = n }
595603

596-
string getName() { result = n.getName() }
604+
bindingset[result]
605+
pragma[inline_late]
606+
string getAName() { result = n.getAName() }
607+
608+
string getLowerCaseName() { result = n.getLowerCaseName() }
597609
}

0 commit comments

Comments
 (0)