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,114 @@ 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 ("[^a-zA-Z]" , "" )); // Safe
47
+ logger .debug (source .replaceAll ("[^a-zA-Z]" , "\n " )); // $ hasTaintFlow
48
+ logger .debug (source .replaceAll ("[^a-zA-Z]" , "\r " )); // $ hasTaintFlow
49
+ logger .debug (source .replaceAll ("[^a-zA-Z\n ]" , "" )); // $ hasTaintFlow
50
+ logger .debug (source .replaceAll ("[^a-zA-Z\r ]" , "" )); // $ hasTaintFlow
51
+ }
52
+
53
+ public void testGuards () {
54
+ String source = (String ) source ();
55
+ Logger logger = null ;
56
+
57
+ if (source .matches (".*\n .*" )) {
58
+ logger .debug (source ); // $ hasTaintFlow
59
+ } else {
60
+ logger .debug (source ); // Safe
61
+ }
62
+
63
+ if (Pattern .matches (".*\n .*" , source )) {
64
+ logger .debug (source ); // $ hasTaintFlow
65
+ } else {
66
+ logger .debug (source ); // Safe
67
+ }
68
+
69
+ if (source .matches (".*\r .*" )) {
70
+ logger .debug (source ); // $ hasTaintFlow
71
+ } else {
72
+ logger .debug (source ); // Safe
73
+ }
74
+
75
+ if (Pattern .matches (".*\r .*" , source )) {
76
+ logger .debug (source ); // $ hasTaintFlow
77
+ } else {
78
+ logger .debug (source ); // Safe
79
+ }
80
+
81
+ if (source .matches (".*" )) {
82
+ logger .debug (source ); // Safe (assuming not DOTALL)
83
+ } else {
84
+ logger .debug (source ); // $ hasTaintFlow
85
+ }
86
+
87
+ if (Pattern .matches (".*" , source )) {
88
+ logger .debug (source ); // Safe (assuming not DOTALL)
89
+ } else {
90
+ logger .debug (source ); // $ hasTaintFlow
91
+ }
92
+
93
+ if (source .matches ("[^\n \r ]*" )) {
94
+ logger .debug (source ); // Safe
95
+ } else {
96
+ logger .debug (source ); // $ hasTaintFlow
97
+ }
98
+
99
+ if (Pattern .matches ("[^\n \r ]*" , source )) {
100
+ logger .debug (source ); // Safe
101
+ } else {
102
+ logger .debug (source ); // $ hasTaintFlow
103
+ }
104
+
105
+ if (source .matches ("[^a-zA-Z]*" )) {
106
+ logger .debug (source ); // $ hasTaintFlow
107
+ } else {
108
+ logger .debug (source ); // $ hasTaintFlow
109
+ }
110
+
111
+ if (Pattern .matches ("[^a-zA-Z]*" , source )) {
112
+ logger .debug (source ); // $ hasTaintFlow
113
+ } else {
114
+ logger .debug (source ); // $ hasTaintFlow
115
+ }
116
+
117
+ if (source .matches ("[\n ]*" )) {
118
+ logger .debug (source ); // $ hasTaintFlow
119
+ } else {
120
+ logger .debug (source ); // $ MISSING: $ hasTaintFlow
121
+ }
122
+
123
+ if (Pattern .matches ("[\n ]*" , source )) {
124
+ logger .debug (source ); // $ hasTaintFlow
125
+ } else {
126
+ logger .debug (source ); // $ MISSING: $ hasTaintFlow
127
+ }
128
+
129
+ }
130
+
22
131
public void test () {
23
132
{
24
133
Category category = null ;
0 commit comments