@@ -10,6 +10,7 @@ struct MyStruct {
1010 password : String ,
1111 password_file_path : String ,
1212 password_enabled : String ,
13+ mfa : String ,
1314}
1415
1516impl MyStruct {
@@ -22,8 +23,8 @@ fn get_password() -> String { get_string() }
2223
2324fn test_passwords (
2425 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 ,
2728 harmless : & str , encrypted_password : & str , password_hash : & str ,
2829 ms : & MyStruct
2930) {
@@ -36,21 +37,27 @@ fn test_passwords(
3637 sink ( pass_phrase) ; // $ sensitive=password
3738 sink ( passphrase) ; // $ sensitive=password
3839 sink ( passPhrase) ; // $ sensitive=password
40+ sink ( backup_code) ; // $ MISSING: sensitive=password
3941
4042 sink ( auth_key) ; // $ sensitive=password
4143 sink ( authkey) ; // $ sensitive=password
4244 sink ( authKey) ; // $ sensitive=password
4345 sink ( authentication_key) ; // $ sensitive=password
4446 sink ( authenticationkey) ; // $ sensitive=password
4547 sink ( authenticationKey) ; // $ sensitive=password
48+ sink ( oauth) ; // $ MISSING: sensitive=password
4649
4750 sink ( ms) ; // $ MISSING: sensitive=password
4851 sink ( ms. password . as_str ( ) ) ; // $ MISSING: sensitive=password
52+ sink ( ms. mfa . as_str ( ) ) ; // $ MISSING: sensitive=password
4953
5054 sink ( get_password ( ) ) ; // $ sensitive=password
5155 let password2 = get_string ( ) ;
5256 sink ( password2) ; // $ sensitive=password
5357
58+ let qry = "password=abc" ;
59+ sink ( qry) ; // $ MISSING: sensitive=password
60+
5461 // not passwords
5562 sink ( harmless) ;
5663 sink ( encrypted_password) ;
@@ -115,48 +122,132 @@ fn test_credentials(
115122 sink ( get_next_token ( ) ) ;
116123}
117124
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+
118155struct Financials {
119156 harmless : String ,
120157 my_bank_account_number : String ,
121158 credit_card_no : String ,
122159 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+ }
124182}
125183
126184struct MyPrivateInfo {
127185 mobile_phone_num : String ,
128186 contact_email : String ,
129187 contact_e_mail_2 : String ,
188+ emergency_contact : String ,
130189 my_ssn : String ,
190+ ssn : SSN ,
131191 birthday : String ,
132- emergency_contact : String ,
133192 name_of_employer : String ,
134193
194+ gender : Gender ,
195+ genderString : String ,
196+
197+ patient_id : u64 ,
198+ linkedPatientId : u64 ,
199+ patient_record : String ,
135200 medical_notes : Vec < String > ,
201+ confidentialMessage : String ,
202+
136203 latitude : f64 ,
137204 longitude : Option < f64 > ,
138205
139206 financials : Financials
140207}
141208
209+ enum ContactDetails {
210+ HomePhoneNumber ( String ) ,
211+ MobileNumber ( String ) ,
212+ Email ( String ) ,
213+ }
214+
142215fn test_private_info (
143- info : & MyPrivateInfo
216+ info : & MyPrivateInfo , details : & ContactDetails ,
144217) {
145218 // private info
146219 sink ( info. mobile_phone_num . as_str ( ) ) ; // $ MISSING: sensitive=private
147220 sink ( info. mobile_phone_num . to_string ( ) ) ; // $ MISSING: sensitive=private
148221 sink ( info. contact_email . as_str ( ) ) ; // $ MISSING: sensitive=private
149222 sink ( info. contact_e_mail_2 . as_str ( ) ) ; // $ MISSING: sensitive=private
150223 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
151227 sink ( info. birthday . as_str ( ) ) ; // $ MISSING: sensitive=private
152228 sink ( info. emergency_contact . as_str ( ) ) ; // $ MISSING: sensitive=private
153229 sink ( info. name_of_employer . as_str ( ) ) ; // $ MISSING: sensitive=private
154230
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
155244 sink ( & info. medical_notes ) ; // $ MISSING: sensitive=private
156245 sink ( info. medical_notes [ 0 ] . as_str ( ) ) ; // $ MISSING: sensitive=private
157246 for n in info. medical_notes . iter ( ) {
158247 sink ( n. as_str ( ) ) ; // $ MISSING: sensitive=private
159248 }
249+ sink ( info. confidentialMessage . as_str ( ) ) ; // $ MISSING: sensitive=private
250+ sink ( info. confidentialMessage . to_lowercase ( ) ) ; // $ MISSING: sensitive=private
160251
161252 sink ( info. latitude ) ; // $ MISSING: sensitive=private
162253 let x = info. longitude . unwrap ( ) ;
@@ -166,7 +257,21 @@ fn test_private_info(
166257 sink ( info. financials . credit_card_no . as_str ( ) ) ; // $ MISSING: sensitive=private
167258 sink ( info. financials . credit_rating ) ; // $ MISSING: sensitive=private
168259 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+ }
169273
170274 // not private info
275+
171276 sink ( info. financials . harmless . as_str ( ) ) ;
172277}
0 commit comments