1
1
import java .util .ResourceBundle ;
2
2
import java .util .logging .LogRecord ;
3
+ import java .util .regex .Pattern ;
3
4
import com .google .common .flogger .LoggingApi ;
4
5
import org .apache .commons .logging .Log ;
5
6
import org .apache .log4j .Category ;
@@ -19,6 +20,172 @@ public Object source() {
19
20
return null ;
20
21
}
21
22
23
+ public void testSanitizers () {
24
+ String source = (String ) source ();
25
+ Logger logger = null ;
26
+ logger .debug (source .replace ("\n " , "" )); // Safe
27
+ logger .debug (source .replace ("\n " , "\n " )); // $ hasTaintFlow
28
+ logger .debug (source .replace ("\n " , "\r " )); // $ hasTaintFlow
29
+ logger .debug (source .replace ("\r " , "" )); // Safe
30
+ logger .debug (source .replace ("\r " , "\n " )); // $ hasTaintFlow
31
+ logger .debug (source .replace ("\r " , "\r " )); // $ hasTaintFlow
32
+ logger .debug (source .replace ("something_else" , "" )); // $ hasTaintFlow
33
+ logger .debug (source .replace ('\n' , '_' )); // Safe
34
+ logger .debug (source .replace ('\n' , '\n' )); // $ hasTaintFlow
35
+ logger .debug (source .replace ('\n' , '\r' )); // $ hasTaintFlow
36
+ logger .debug (source .replace ('\r' , '_' )); // Safe
37
+ logger .debug (source .replace ('\r' , '\n' )); // $ hasTaintFlow
38
+ logger .debug (source .replace ('\r' , '\r' )); // $ hasTaintFlow
39
+ logger .debug (source .replace ('-' , '_' )); // $ hasTaintFlow
40
+ logger .debug (source .replaceAll ("\n " , "" )); // Safe
41
+ logger .debug (source .replaceAll ("\n " , "\n " )); // $ hasTaintFlow
42
+ logger .debug (source .replaceAll ("\n " , "\r " )); // $ hasTaintFlow
43
+ logger .debug (source .replaceAll ("\r " , "" )); // Safe
44
+ logger .debug (source .replaceAll ("\r " , "\n " )); // $ hasTaintFlow
45
+ logger .debug (source .replaceAll ("\r " , "\r " )); // $ hasTaintFlow
46
+ logger .debug (source .replaceAll ("\\ n" , "" )); // Safe
47
+ logger .debug (source .replaceAll ("\\ n" , "\n " )); // $ hasTaintFlow
48
+ logger .debug (source .replaceAll ("\\ n" , "\r " )); // $ hasTaintFlow
49
+ logger .debug (source .replaceAll ("\\ r" , "" )); // Safe
50
+ logger .debug (source .replaceAll ("\\ r" , "\n " )); // $ hasTaintFlow
51
+ logger .debug (source .replaceAll ("\\ r" , "\r " )); // $ hasTaintFlow
52
+ logger .debug (source .replaceAll ("\\ R" , "" )); // Safe
53
+ logger .debug (source .replaceAll ("\\ R" , "\n " )); // $ hasTaintFlow
54
+ logger .debug (source .replaceAll ("\\ R" , "\r " )); // $ hasTaintFlow
55
+ logger .debug (source .replaceAll ("[^a-zA-Z]" , "" )); // Safe
56
+ logger .debug (source .replaceAll ("[^a-zA-Z]" , "\n " )); // $ hasTaintFlow
57
+ logger .debug (source .replaceAll ("[^a-zA-Z]" , "\r " )); // $ hasTaintFlow
58
+ logger .debug (source .replaceAll ("[^a-zA-Z\n ]" , "" )); // $ hasTaintFlow
59
+ logger .debug (source .replaceAll ("[^a-zA-Z\r ]" , "" )); // $ hasTaintFlow
60
+ logger .debug (source .replaceAll ("[^a-zA-Z\\ R]" , "" )); // $ hasTaintFlow
61
+ }
62
+
63
+ public void testGuards () {
64
+ String source = (String ) source ();
65
+ Logger logger = null ;
66
+
67
+ if (source .matches (".*\n .*" )) {
68
+ logger .debug (source ); // $ hasTaintFlow
69
+ } else {
70
+ logger .debug (source ); // Safe
71
+ }
72
+
73
+ if (Pattern .matches (".*\n .*" , source )) {
74
+ logger .debug (source ); // $ hasTaintFlow
75
+ } else {
76
+ logger .debug (source ); // Safe
77
+ }
78
+
79
+ if (source .matches (".*\\ n.*" )) {
80
+ logger .debug (source ); // $ hasTaintFlow
81
+ } else {
82
+ logger .debug (source ); // Safe
83
+ }
84
+
85
+ if (Pattern .matches (".*\\ n.*" , source )) {
86
+ logger .debug (source ); // $ hasTaintFlow
87
+ } else {
88
+ logger .debug (source ); // Safe
89
+ }
90
+
91
+ if (source .matches (".*\r .*" )) {
92
+ logger .debug (source ); // $ hasTaintFlow
93
+ } else {
94
+ logger .debug (source ); // Safe
95
+ }
96
+
97
+ if (Pattern .matches (".*\r .*" , source )) {
98
+ logger .debug (source ); // $ hasTaintFlow
99
+ } else {
100
+ logger .debug (source ); // Safe
101
+ }
102
+
103
+ if (source .matches (".*\\ r.*" )) {
104
+ logger .debug (source ); // $ hasTaintFlow
105
+ } else {
106
+ logger .debug (source ); // Safe
107
+ }
108
+
109
+ if (Pattern .matches (".*\\ r.*" , source )) {
110
+ logger .debug (source ); // $ hasTaintFlow
111
+ } else {
112
+ logger .debug (source ); // Safe
113
+ }
114
+
115
+ if (source .matches (".*\\ R.*" )) {
116
+ logger .debug (source ); // $ hasTaintFlow
117
+ } else {
118
+ logger .debug (source ); // Safe
119
+ }
120
+
121
+ if (Pattern .matches (".*\\ R.*" , source )) {
122
+ logger .debug (source ); // $ hasTaintFlow
123
+ } else {
124
+ logger .debug (source ); // Safe
125
+ }
126
+
127
+ if (source .matches (".*" )) {
128
+ logger .debug (source ); // Safe (assuming not DOTALL)
129
+ } else {
130
+ logger .debug (source ); // $ hasTaintFlow
131
+ }
132
+
133
+ if (Pattern .matches (".*" , source )) {
134
+ logger .debug (source ); // Safe (assuming not DOTALL)
135
+ } else {
136
+ logger .debug (source ); // $ hasTaintFlow
137
+ }
138
+
139
+ if (source .matches ("[^\n \r ]*" )) {
140
+ logger .debug (source ); // Safe
141
+ } else {
142
+ logger .debug (source ); // $ hasTaintFlow
143
+ }
144
+
145
+ if (Pattern .matches ("[^\n \r ]*" , source )) {
146
+ logger .debug (source ); // Safe
147
+ } else {
148
+ logger .debug (source ); // $ hasTaintFlow
149
+ }
150
+
151
+ if (source .matches ("[^\\ R]*" )) {
152
+ logger .debug (source ); // Safe
153
+ } else {
154
+ logger .debug (source ); // $ hasTaintFlow
155
+ }
156
+
157
+ if (Pattern .matches ("[^\\ R]*" , source )) {
158
+ logger .debug (source ); // Safe
159
+ } else {
160
+ logger .debug (source ); // $ hasTaintFlow
161
+ }
162
+
163
+ if (source .matches ("[^a-zA-Z]*" )) {
164
+ logger .debug (source ); // $ hasTaintFlow
165
+ } else {
166
+ logger .debug (source ); // $ hasTaintFlow
167
+ }
168
+
169
+ if (Pattern .matches ("[^a-zA-Z]*" , source )) {
170
+ logger .debug (source ); // $ hasTaintFlow
171
+ } else {
172
+ logger .debug (source ); // $ hasTaintFlow
173
+ }
174
+
175
+ if (source .matches ("[\n ]*" )) {
176
+ logger .debug (source ); // $ hasTaintFlow
177
+ } else {
178
+ logger .debug (source ); // $ MISSING: $ hasTaintFlow
179
+ }
180
+
181
+ if (Pattern .matches ("[\n ]*" , source )) {
182
+ logger .debug (source ); // $ hasTaintFlow
183
+ } else {
184
+ logger .debug (source ); // $ MISSING: $ hasTaintFlow
185
+ }
186
+
187
+ }
188
+
22
189
public void test () {
23
190
{
24
191
Category category = null ;
0 commit comments