File tree Expand file tree Collapse file tree
python/ql/src/experimental/semmle/python Expand file tree Collapse file tree Original file line number Diff line number Diff 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}
Original file line number Diff line number Diff 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}
You can’t perform that action at this time.
0 commit comments