Skip to content

Commit 805f86a

Browse files
committed
Polish RegexEscape
1 parent 3d990c5 commit 805f86a

2 files changed

Lines changed: 14 additions & 3 deletions

File tree

python/ql/src/experimental/semmle/python/Concepts.qll

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,17 @@ class RegexExecution extends DataFlow::Node {
4646
Attribute getRegexMethod() { result = range.getRegexMethod() }
4747
}
4848

49-
class RegexEscape extends DataFlow::Node {
49+
class RegexEscape extends DataFlow::CallCfgNode {
50+
DataFlow::Node regexNode;
51+
Attribute regexMethod;
52+
5053
RegexEscape() {
51-
this = API::moduleImport("re").getMember("escape").getACall().(DataFlow::CallCfgNode).getArg(0)
54+
this = API::moduleImport("re").getMember("escape").getACall() and
55+
regexNode = this.getArg(0) and
56+
regexMethod = this.asExpr().(Attribute)
5257
}
58+
59+
DataFlow::Node getRegexNode() { result = regexNode }
60+
61+
Attribute getRegexMethod() { result = regexMethod }
5362
}

python/ql/src/experimental/semmle/python/security/injection/RegexInjection.qll

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,7 @@ class RegexInjectionFlowConfig extends TaintTracking::Configuration {
2020

2121
override predicate isSink(DataFlow::Node sink) { sink = any(RegexExecution re).getRegexNode() }
2222

23-
override predicate isSanitizer(DataFlow::Node sanitizer) { sanitizer instanceof RegexEscape }
23+
override predicate isSanitizer(DataFlow::Node sanitizer) {
24+
sanitizer = sanitizer.(RegexEscape).getRegexNode()
25+
}
2426
}

0 commit comments

Comments
 (0)