@@ -43,7 +43,35 @@ class Configuration extends TaintTracking::Configuration {
43
43
or
44
44
exists ( RegexExecution re | nodeFrom = re .getString ( ) and nodeTo = re )
45
45
or
46
- stringManipulation ( nodeFrom , nodeTo )
46
+ // String methods
47
+ exists ( MethodCallNode call , string method_name |
48
+ nodeTo = call and call .getMethodName ( ) = method_name
49
+ |
50
+ call .calls ( nodeFrom , method_name ) and
51
+ method_name in [
52
+ "capitalize" , "casefold" , "center" , "expandtabs" , "format" , "format_map" , "join" ,
53
+ "ljust" , "lstrip" , "lower" , "replace" , "rjust" , "rstrip" , "strip" , "swapcase" , "title" ,
54
+ "upper" , "zfill" , "encode" , "decode"
55
+ ]
56
+ or
57
+ method_name = "replace" and
58
+ nodeFrom = call .getArg ( 1 )
59
+ or
60
+ method_name = "format" and
61
+ nodeFrom = call .getArg ( _)
62
+ or
63
+ // str -> List[str]
64
+ call .calls ( nodeFrom , method_name ) and
65
+ method_name in [ "partition" , "rpartition" , "rsplit" , "split" , "splitlines" ]
66
+ or
67
+ // Iterable[str] -> str
68
+ method_name = "join" and
69
+ nodeFrom = call .getArg ( 0 )
70
+ or
71
+ // Mapping[str, Any] -> str
72
+ method_name = "format_map" and
73
+ nodeFrom = call .getArg ( 0 )
74
+ )
47
75
) and
48
76
stateFrom instanceof PreValidation and
49
77
stateTo instanceof PostValidation
0 commit comments