Skip to content

Commit

Permalink
Merge pull request #7393 from aibaars/ruby-simple-parameter-not-expr
Browse files Browse the repository at this point in the history
Ruby: SimpleParameter should not be an Expr
  • Loading branch information
aibaars authored Dec 17, 2021
2 parents 734bfbd + 3ef707e commit 96aef9f
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 10 deletions.
10 changes: 5 additions & 5 deletions ruby/ql/lib/codeql/ruby/ast/Erb.qll
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ private class ErbDirectiveFile extends File {

/** Gets a statement in this file. */
pragma[nomagic]
Stmt getAStmt(int startLine, int startColumn) {
AstNode getAnAstNode(int startLine, int startColumn) {
exists(Location loc |
result.getLocation() = loc and
loc.getFile() = this and
Expand All @@ -142,13 +142,13 @@ class ErbDirective extends TDirectiveNode, ErbAstNode {
)
}

private predicate containsStmtStart(Stmt s) {
private predicate containsAstNodeStart(AstNode s) {
// `Toplevel` statements are not contained within individual directives,
// though their start location may appear within a directive location
not s instanceof Toplevel and
exists(ErbDirectiveFile file, int startLine, int startColumn |
this.spans(file, startLine) and
s = file.getAStmt(startLine, startColumn) and
s = file.getAnAstNode(startLine, startColumn) and
locationIncludesPosition(this.getLocation(), startLine, startColumn)
)
}
Expand All @@ -158,8 +158,8 @@ class ErbDirective extends TDirectiveNode, ErbAstNode {
* statement starting in this directive.
*/
Stmt getAChildStmt() {
this.containsStmtStart(result) and
not this.containsStmtStart(result.getParent())
this.containsAstNodeStart(result) and
not this.containsAstNodeStart(result.getParent())
}

/**
Expand Down
4 changes: 1 addition & 3 deletions ruby/ql/lib/codeql/ruby/ast/Pattern.qll
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,12 @@ deprecated class Pattern extends AstNode {
Variable getAVariable() { none() }
}

deprecated private class TVariablePattern = TVariableAccess or TSimpleParameter;

/**
* DEPRECATED
*
* A simple variable pattern.
*/
deprecated class VariablePattern extends Pattern, LhsExpr, TVariablePattern {
deprecated class VariablePattern extends Pattern, LhsExpr, TVariableAccess {
override Variable getAVariable() { result = this.(VariableAccess).getVariable() }
}

Expand Down
2 changes: 1 addition & 1 deletion ruby/ql/lib/codeql/ruby/ast/internal/AST.qll
Original file line number Diff line number Diff line change
Expand Up @@ -660,7 +660,7 @@ class TExpr =
TSelf or TArgumentList or TInClause or TRescueClause or TRescueModifierExpr or TPair or
TStringConcatenation or TCall or TBlockArgument or TConstantAccess or TControlExpr or
TWhenExpr or TLiteral or TCallable or TVariableAccess or TStmtSequence or TOperation or
TSimpleParameter or TForwardArgument or TDestructuredLhsExpr;
TForwardArgument or TDestructuredLhsExpr;

class TSplatExpr = TSplatExprReal or TSplatExprSynth;

Expand Down
2 changes: 1 addition & 1 deletion ruby/ql/lib/codeql/ruby/security/XSS.qll
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ private module Shared {
isHelperMethod(helperMethod, name, template) and
isMethodCall(helperMethodCall.getExpr(), name, template) and
helperMethodCall.getArgument(pragma[only_bind_into](argIdx)) = node1.asExpr() and
helperMethod.getParameter(pragma[only_bind_into](argIdx)) = node2.asExpr().getExpr()
helperMethod.getParameter(pragma[only_bind_into](argIdx)) = node2.asParameter()
)
}

Expand Down

0 comments on commit 96aef9f

Please sign in to comment.