@@ -85,14 +85,34 @@ private string regexpProbablySafe() {
85
85
result = "(?is).*(file|path|url|invalid).*"
86
86
}
87
87
88
+ /**
89
+ * Gets a string that is to be tested for sensitivity.
90
+ */
91
+ cached
92
+ private string sensitiveCandidateStrings ( ) {
93
+ result = any ( VarDecl v ) .getName ( )
94
+ or
95
+ result = any ( Function f ) .getShortName ( )
96
+ or
97
+ result = any ( Argument a ) .getLabel ( )
98
+ }
99
+
100
+ /**
101
+ * Gets a string from the candidates that is sensitive.
102
+ */
103
+ cached
104
+ private string sensitiveStrings ( SensitiveDataType sensitiveType ) {
105
+ result = sensitiveCandidateStrings ( ) and
106
+ result .regexpMatch ( sensitiveType .getRegexp ( ) )
107
+ }
108
+
88
109
/**
89
110
* A `VarDecl` that might be used to contain sensitive data.
90
111
*/
91
112
private class SensitiveVarDecl extends VarDecl {
92
113
SensitiveDataType sensitiveType ;
93
114
94
- cached
95
- SensitiveVarDecl ( ) { this .getName ( ) .regexpMatch ( sensitiveType .getRegexp ( ) ) }
115
+ SensitiveVarDecl ( ) { this .getName ( ) = sensitiveStrings ( sensitiveType ) }
96
116
97
117
predicate hasInfo ( string label , SensitiveDataType type ) {
98
118
label = this .getName ( ) and
@@ -105,16 +125,11 @@ private class SensitiveVarDecl extends VarDecl {
105
125
*/
106
126
private class SensitiveFunction extends Function {
107
127
SensitiveDataType sensitiveType ;
108
- string name ; // name of the function, not including the argument list.
109
128
110
- cached
111
- SensitiveFunction ( ) {
112
- name = this .getShortName ( ) and
113
- name .regexpMatch ( sensitiveType .getRegexp ( ) )
114
- }
129
+ SensitiveFunction ( ) { this .getShortName ( ) = sensitiveStrings ( sensitiveType ) }
115
130
116
131
predicate hasInfo ( string label , SensitiveDataType type ) {
117
- label = name and
132
+ label = this . getShortName ( ) and
118
133
sensitiveType = type
119
134
}
120
135
}
@@ -125,8 +140,7 @@ private class SensitiveFunction extends Function {
125
140
private class SensitiveArgument extends Argument {
126
141
SensitiveDataType sensitiveType ;
127
142
128
- cached
129
- SensitiveArgument ( ) { this .getLabel ( ) .regexpMatch ( sensitiveType .getRegexp ( ) ) }
143
+ SensitiveArgument ( ) { this .getLabel ( ) = sensitiveStrings ( sensitiveType ) }
130
144
131
145
predicate hasInfo ( string label , SensitiveDataType type ) {
132
146
label = this .getLabel ( ) and
0 commit comments