@@ -10,6 +10,7 @@ struct MyStruct {
10
10
password : String ,
11
11
password_file_path : String ,
12
12
password_enabled : String ,
13
+ mfa : String ,
13
14
}
14
15
15
16
impl MyStruct {
@@ -22,8 +23,8 @@ fn get_password() -> String { get_string() }
22
23
23
24
fn test_passwords (
24
25
password : & str , pass_word : & str , passwd : & str , my_password : & str , password_str : & str ,
25
- pass_phrase : & str , passphrase : & str , passPhrase : & str ,
26
- auth_key : & str , authkey : & str , authKey : & str , authentication_key : & str , authenticationkey : & str , authenticationKey : & str ,
26
+ pass_phrase : & str , passphrase : & str , passPhrase : & str , backup_code : & str ,
27
+ auth_key : & str , authkey : & str , authKey : & str , authentication_key : & str , authenticationkey : & str , authenticationKey : & str , oauth : & str ,
27
28
harmless : & str , encrypted_password : & str , password_hash : & str ,
28
29
ms : & MyStruct
29
30
) {
@@ -36,21 +37,27 @@ fn test_passwords(
36
37
sink ( pass_phrase) ; // $ sensitive=password
37
38
sink ( passphrase) ; // $ sensitive=password
38
39
sink ( passPhrase) ; // $ sensitive=password
40
+ sink ( backup_code) ; // $ MISSING: sensitive=password
39
41
40
42
sink ( auth_key) ; // $ sensitive=password
41
43
sink ( authkey) ; // $ sensitive=password
42
44
sink ( authKey) ; // $ sensitive=password
43
45
sink ( authentication_key) ; // $ sensitive=password
44
46
sink ( authenticationkey) ; // $ sensitive=password
45
47
sink ( authenticationKey) ; // $ sensitive=password
48
+ sink ( oauth) ; // $ MISSING: sensitive=password
46
49
47
50
sink ( ms) ; // $ MISSING: sensitive=password
48
51
sink ( ms. password . as_str ( ) ) ; // $ MISSING: sensitive=password
52
+ sink ( ms. mfa . as_str ( ) ) ; // $ MISSING: sensitive=password
49
53
50
54
sink ( get_password ( ) ) ; // $ sensitive=password
51
55
let password2 = get_string ( ) ;
52
56
sink ( password2) ; // $ sensitive=password
53
57
58
+ let qry = "password=abc" ;
59
+ sink ( qry) ; // $ MISSING: sensitive=password
60
+
54
61
// not passwords
55
62
sink ( harmless) ;
56
63
sink ( encrypted_password) ;
@@ -115,48 +122,132 @@ fn test_credentials(
115
122
sink ( get_next_token ( ) ) ;
116
123
}
117
124
125
+ struct MacAddr {
126
+ values : [ u8 ; 12 ] ,
127
+ }
128
+
129
+ struct DeviceInfo {
130
+ api_key : String ,
131
+ deviceApiToken : String ,
132
+ finger_print : String ,
133
+ ip_address : String ,
134
+ macaddr12 : [ u8 ; 12 ] ,
135
+ mac_addr : MacAddr ,
136
+ networkMacAddress : String ,
137
+ }
138
+
139
+ impl DeviceInfo {
140
+ fn test_device_info ( & self , other : & DeviceInfo ) {
141
+ // private device info
142
+ sink ( & self . api_key ) ; // $ MISSING: sensitive=id
143
+ sink ( & other. api_key ) ; // $ MISSING: sensitive=id
144
+ sink ( & self . deviceApiToken ) ; // $ MISSING: sensitive=id
145
+ sink ( & self . finger_print ) ; // $ MISSING: sensitive=id
146
+ sink ( & self . ip_address ) ; // $ MISSING: sensitive=id
147
+ sink ( self . macaddr12 ) ; // $ MISSING: sensitive=id
148
+ sink ( & self . mac_addr ) ; // $ MISSING: sensitive=id
149
+ sink ( self . mac_addr . values ) ; // $ MISSING: sensitive=id
150
+ sink ( self . mac_addr . values [ 0 ] ) ; // $ MISSING: sensitive=id
151
+ sink ( & self . networkMacAddress ) ; // $ MISSING: sensitive=id
152
+ }
153
+ }
154
+
118
155
struct Financials {
119
156
harmless : String ,
120
157
my_bank_account_number : String ,
121
158
credit_card_no : String ,
122
159
credit_rating : i32 ,
123
- user_ccn : String
160
+ user_ccn : String ,
161
+ cvv : String ,
162
+ beneficiary : String ,
163
+ routing_number : u64 ,
164
+ routingNumberText : String ,
165
+ iban : String ,
166
+ iBAN : String ,
167
+ }
168
+
169
+ enum Gender {
170
+ Male ,
171
+ Female ,
172
+ }
173
+
174
+ struct SSN {
175
+ data : u128 ,
176
+ }
177
+
178
+ impl SSN {
179
+ fn get_data ( & self ) -> u128 {
180
+ return self . data ;
181
+ }
124
182
}
125
183
126
184
struct MyPrivateInfo {
127
185
mobile_phone_num : String ,
128
186
contact_email : String ,
129
187
contact_e_mail_2 : String ,
188
+ emergency_contact : String ,
130
189
my_ssn : String ,
190
+ ssn : SSN ,
131
191
birthday : String ,
132
- emergency_contact : String ,
133
192
name_of_employer : String ,
134
193
194
+ gender : Gender ,
195
+ genderString : String ,
196
+
197
+ patient_id : u64 ,
198
+ linkedPatientId : u64 ,
199
+ patient_record : String ,
135
200
medical_notes : Vec < String > ,
201
+ confidentialMessage : String ,
202
+
136
203
latitude : f64 ,
137
204
longitude : Option < f64 > ,
138
205
139
206
financials : Financials
140
207
}
141
208
209
+ enum ContactDetails {
210
+ HomePhoneNumber ( String ) ,
211
+ MobileNumber ( String ) ,
212
+ Email ( String ) ,
213
+ }
214
+
142
215
fn test_private_info (
143
- info : & MyPrivateInfo
216
+ info : & MyPrivateInfo , details : & ContactDetails ,
144
217
) {
145
218
// private info
146
219
sink ( info. mobile_phone_num . as_str ( ) ) ; // $ MISSING: sensitive=private
147
220
sink ( info. mobile_phone_num . to_string ( ) ) ; // $ MISSING: sensitive=private
148
221
sink ( info. contact_email . as_str ( ) ) ; // $ MISSING: sensitive=private
149
222
sink ( info. contact_e_mail_2 . as_str ( ) ) ; // $ MISSING: sensitive=private
150
223
sink ( info. my_ssn . as_str ( ) ) ; // $ MISSING: sensitive=private
224
+ sink ( & info. ssn ) ; // $ MISSING: sensitive=private
225
+ sink ( info. ssn . data ) ; // $ MISSING: sensitive=private
226
+ sink ( info. ssn . get_data ( ) ) ; // $ MISSING: sensitive=private
151
227
sink ( info. birthday . as_str ( ) ) ; // $ MISSING: sensitive=private
152
228
sink ( info. emergency_contact . as_str ( ) ) ; // $ MISSING: sensitive=private
153
229
sink ( info. name_of_employer . as_str ( ) ) ; // $ MISSING: sensitive=private
154
230
231
+ sink ( & info. gender ) ; // $ MISSING: sensitive=private
232
+ sink ( info. genderString . as_str ( ) ) ; // $ MISSING: sensitive=private
233
+ let sex = "Male" ;
234
+ let gender = Gender :: Female ;
235
+ let a = Gender :: Female ;
236
+ sink ( sex) ; // $ MISSING: sensitive=private
237
+ sink ( gender) ; // $ MISSING: sensitive=private
238
+ sink ( a) ; // $ MISSING: sensitive=private
239
+
240
+ sink ( info. patient_id ) ; // $ MISSING: sensitive=private
241
+ sink ( info. linkedPatientId ) ; // $ MISSING: sensitive=private
242
+ sink ( info. patient_record . as_str ( ) ) ; // $ MISSING: sensitive=private
243
+ sink ( info. patient_record . trim ( ) ) ; // $ MISSING: sensitive=private
155
244
sink ( & info. medical_notes ) ; // $ MISSING: sensitive=private
156
245
sink ( info. medical_notes [ 0 ] . as_str ( ) ) ; // $ MISSING: sensitive=private
157
246
for n in info. medical_notes . iter ( ) {
158
247
sink ( n. as_str ( ) ) ; // $ MISSING: sensitive=private
159
248
}
249
+ sink ( info. confidentialMessage . as_str ( ) ) ; // $ MISSING: sensitive=private
250
+ sink ( info. confidentialMessage . to_lowercase ( ) ) ; // $ MISSING: sensitive=private
160
251
161
252
sink ( info. latitude ) ; // $ MISSING: sensitive=private
162
253
let x = info. longitude . unwrap ( ) ;
@@ -166,7 +257,21 @@ fn test_private_info(
166
257
sink ( info. financials . credit_card_no . as_str ( ) ) ; // $ MISSING: sensitive=private
167
258
sink ( info. financials . credit_rating ) ; // $ MISSING: sensitive=private
168
259
sink ( info. financials . user_ccn . as_str ( ) ) ; // $ MISSING: sensitive=private
260
+ sink ( info. financials . cvv . as_str ( ) ) ; // $ MISSING: sensitive=private
261
+ sink ( info. financials . beneficiary . as_str ( ) ) ; // $ MISSING: sensitive=private
262
+ sink ( info. financials . routing_number ) ; // $ MISSING: sensitive=private
263
+ sink ( info. financials . routingNumberText . as_str ( ) ) ; // $ MISSING: sensitive=private
264
+ sink ( info. financials . iban . as_str ( ) ) ; // $ MISSING: sensitive=private
265
+ sink ( info. financials . iBAN . as_str ( ) ) ; // $ MISSING: sensitive=private
266
+
267
+ sink ( ContactDetails :: HomePhoneNumber ( "123" . to_string ( ) ) ) ; // $ MISSING: sensitive=private
268
+ sink ( ContactDetails :: MobileNumber ( "123" . to_string ( ) ) ) ; // $ MISSING: sensitive=private
269
+ sink ( ContactDetails :: Email ( "a@b" . to_string ( ) ) ) ; // $ MISSING: sensitive=private
270
+ if let ContactDetails :: MobileNumber ( num) = details {
271
+ sink ( num. as_str ( ) ) ; // $ MISSING: sensitive=private
272
+ }
169
273
170
274
// not private info
275
+
171
276
sink ( info. financials . harmless . as_str ( ) ) ;
172
277
}
0 commit comments