Skip to content

Commit 4b42c44

Browse files
committed
Ruby: handle Regexp.quote wherever we handle Regexp.escape
1 parent 5b11cfe commit 4b42c44

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

ruby/ql/lib/codeql/ruby/frameworks/StandardLibrary.qll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -335,12 +335,12 @@ class ModuleEvalCallCodeExecution extends CodeExecution::Range, DataFlow::CallNo
335335
override DataFlow::Node getCode() { result = this.getArgument(0) }
336336
}
337337

338-
/** Flow summary for `Regexp.escape`. */
338+
/** Flow summary for `Regexp.escape` and its alias, `Regexp.quote`. */
339339
class RegexpEscapeSummary extends SummarizedCallable {
340340
RegexpEscapeSummary() { this = "Regexp.escape" }
341341

342342
override MethodCall getACall() {
343-
result = API::getTopLevelMember("Regexp").getAMethodCall("escape").asExpr().getExpr()
343+
result = API::getTopLevelMember("Regexp").getAMethodCall(["escape", "quote"]).asExpr().getExpr()
344344
}
345345

346346
override predicate propagatesFlowExt(string input, string output, boolean preservesValue) {

ruby/ql/lib/codeql/ruby/security/performance/RegExpInjectionCustomizations.qll

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,12 @@ module RegExpInjection {
7070
StringConstArrayInclusionCall { }
7171

7272
/**
73-
* A call to `Regexp.escape`, considered as a sanitizer.
73+
* A call to `Regexp.escape` (or its alias, `Regexp.quote`), considered as a
74+
* sanitizer.
7475
*/
7576
class RegexpEscapeSanitization extends Sanitizer {
76-
RegexpEscapeSanitization() { this = API::getTopLevelMember("Regexp").getAMethodCall("escape") }
77+
RegexpEscapeSanitization() {
78+
this = API::getTopLevelMember("Regexp").getAMethodCall(["escape", "quote"])
79+
}
7780
}
7881
}

0 commit comments

Comments
 (0)