@@ -57,31 +57,31 @@ async fn test_sqlx_mysql(url: &str, enable_remote: bool) -> Result<(), sqlx::Err
57
57
let prepared_query_1 = String :: from ( "SELECT * FROM people WHERE firstname=?" ) ; // (prepared arguments are safe)
58
58
59
59
// direct execution
60
- let _ = conn. execute ( safe_query_1. as_str ( ) ) . await ?; // $ MISSING: sql-sink
61
- let _ = conn. execute ( safe_query_2. as_str ( ) ) . await ?; // $ MISSING: sql-sink
62
- let _ = conn. execute ( safe_query_3. as_str ( ) ) . await ?; // $ MISSING: sql-sink
63
- let _ = conn. execute ( unsafe_query_1. as_str ( ) ) . await ?; // $ MISSING: sql-sink Alert [sql-injection]=args1
60
+ let _ = conn. execute ( safe_query_1. as_str ( ) ) . await ?; // $ sql-sink
61
+ let _ = conn. execute ( safe_query_2. as_str ( ) ) . await ?; // $ sql-sink
62
+ let _ = conn. execute ( safe_query_3. as_str ( ) ) . await ?; // $ sql-sink
63
+ let _ = conn. execute ( unsafe_query_1. as_str ( ) ) . await ?; // $ sql-sink AMISSING: lert [sql-injection]=args1
64
64
if enable_remote {
65
- let _ = conn. execute ( unsafe_query_2. as_str ( ) ) . await ?; // $ MISSING: sql-sink Alert[sql-injection]=remote1
66
- let _ = conn. execute ( unsafe_query_3. as_str ( ) ) . await ?; // $ MISSING: sql-sink Alert[sql-injection]=remote1
67
- let _ = conn. execute ( unsafe_query_4. as_str ( ) ) . await ?; // $ MISSING: sql-sink Alert[sql-injection]=remote1
65
+ let _ = conn. execute ( unsafe_query_2. as_str ( ) ) . await ?; // $ sql-sink MISSING: Alert[sql-injection]=remote1
66
+ let _ = conn. execute ( unsafe_query_3. as_str ( ) ) . await ?; // $ sql-sink MISSING: Alert[sql-injection]=remote1
67
+ let _ = conn. execute ( unsafe_query_4. as_str ( ) ) . await ?; // $ sql-sink MISSING: Alert[sql-injection]=remote1
68
68
}
69
69
70
70
// prepared queries
71
- let _ = sqlx:: query ( safe_query_1. as_str ( ) ) . execute ( & pool) . await ?; // $ MISSING: sql-sink
72
- let _ = sqlx:: query ( safe_query_2. as_str ( ) ) . execute ( & pool) . await ?; // $ MISSING: sql-sink
73
- let _ = sqlx:: query ( safe_query_3. as_str ( ) ) . execute ( & pool) . await ?; // $ MISSING: sql-sink
74
- let _ = sqlx:: query ( unsafe_query_1. as_str ( ) ) . execute ( & pool) . await ?; // $ MISSING: sql-sink Alert[sql-injection]=args1
71
+ let _ = sqlx:: query ( safe_query_1. as_str ( ) ) . execute ( & pool) . await ?; // $ sql-sink
72
+ let _ = sqlx:: query ( safe_query_2. as_str ( ) ) . execute ( & pool) . await ?; // $ sql-sink
73
+ let _ = sqlx:: query ( safe_query_3. as_str ( ) ) . execute ( & pool) . await ?; // $ sql-sink
74
+ let _ = sqlx:: query ( unsafe_query_1. as_str ( ) ) . execute ( & pool) . await ?; // $ sql-sink MISSING: Alert[sql-injection]=args1
75
75
if enable_remote {
76
- let _ = sqlx:: query ( unsafe_query_2. as_str ( ) ) . execute ( & pool) . await ?; // $ MISSING: sql-sink Alert[sql-injection]=remote1
77
- let _ = sqlx:: query ( unsafe_query_3. as_str ( ) ) . execute ( & pool) . await ?; // $ MISSING: sql-sink Alert[sql-injection]=remote1
78
- let _ = sqlx:: query ( unsafe_query_4. as_str ( ) ) . execute ( & pool) . await ?; // $ MISSING: sql-sink Alert[sql-injection]=remote1
76
+ let _ = sqlx:: query ( unsafe_query_2. as_str ( ) ) . execute ( & pool) . await ?; // $ sql-sink MISSING: Alert[sql-injection]=remote1
77
+ let _ = sqlx:: query ( unsafe_query_3. as_str ( ) ) . execute ( & pool) . await ?; // $ sql-sink MISSING: Alert[sql-injection]=remote1
78
+ let _ = sqlx:: query ( unsafe_query_4. as_str ( ) ) . execute ( & pool) . await ?; // $ sql-sink MISSING: Alert[sql-injection]=remote1
79
79
}
80
- let _ = sqlx:: query ( prepared_query_1. as_str ( ) ) . bind ( const_string) . execute ( & pool) . await ?; // $ MISSING: sql-sink
81
- let _ = sqlx:: query ( prepared_query_1. as_str ( ) ) . bind ( arg_string) . execute ( & pool) . await ?; // $ MISSING: sql-sink
80
+ let _ = sqlx:: query ( prepared_query_1. as_str ( ) ) . bind ( const_string) . execute ( & pool) . await ?; // $ sql-sink
81
+ let _ = sqlx:: query ( prepared_query_1. as_str ( ) ) . bind ( arg_string) . execute ( & pool) . await ?; // $ sql-sink
82
82
if enable_remote {
83
- let _ = sqlx:: query ( prepared_query_1. as_str ( ) ) . bind ( remote_string) . execute ( & pool) . await ?; // $ MISSING: sql-sink
84
- let _ = sqlx:: query ( prepared_query_1. as_str ( ) ) . bind ( remote_number) . execute ( & pool) . await ?; // $ MISSING: sql-sink
83
+ let _ = sqlx:: query ( prepared_query_1. as_str ( ) ) . bind ( remote_string) . execute ( & pool) . await ?; // $ sql-sink
84
+ let _ = sqlx:: query ( prepared_query_1. as_str ( ) ) . bind ( remote_number) . execute ( & pool) . await ?; // $ sql-sink
85
85
}
86
86
87
87
Ok ( ( ) )
@@ -99,56 +99,56 @@ async fn test_sqlx_sqlite(url: &str, enable_remote: bool) -> Result<(), sqlx::Er
99
99
let prepared_query_1 = String :: from ( "SELECT * FROM people WHERE firstname=?" ) ; // (prepared arguments are safe)
100
100
101
101
// direct execution (with extra variants)
102
- let _ = conn. execute ( safe_query_1. as_str ( ) ) . await ?; // $ MISSING: sql-sink
102
+ let _ = conn. execute ( safe_query_1. as_str ( ) ) . await ?; // $ sql-sink
103
103
if enable_remote {
104
- let _ = conn. execute ( unsafe_query_1. as_str ( ) ) . await ?; // $ MISSING: sql-sink Alert[sql-injection]=remote2
104
+ let _ = conn. execute ( unsafe_query_1. as_str ( ) ) . await ?; // $ sql-sink MISSING: Alert[sql-injection]=remote2
105
105
}
106
106
// ...
107
- let _ = sqlx:: raw_sql ( safe_query_1. as_str ( ) ) . execute ( & mut conn) . await ?; // $ MISSING: ql -sink
107
+ let _ = sqlx:: raw_sql ( safe_query_1. as_str ( ) ) . execute ( & mut conn) . await ?; // $ sql -sink
108
108
if enable_remote {
109
- let _ = sqlx:: raw_sql ( unsafe_query_1. as_str ( ) ) . execute ( & mut conn) . await ?; // $ MISSING: sql-sink Alert[sql-injection]=remote2
109
+ let _ = sqlx:: raw_sql ( unsafe_query_1. as_str ( ) ) . execute ( & mut conn) . await ?; // $ sql-sink MISSING: Alert[sql-injection]=remote2
110
110
}
111
111
112
112
// prepared queries (with extra variants)
113
- let _ = sqlx:: query ( safe_query_1. as_str ( ) ) . execute ( & mut conn) . await ?; // $ MISSING: sql-sink
114
- let _ = sqlx:: query ( prepared_query_1. as_str ( ) ) . bind ( & const_string) . execute ( & mut conn) . await ?; // $ MISSING: sql-sink
113
+ let _ = sqlx:: query ( safe_query_1. as_str ( ) ) . execute ( & mut conn) . await ?; // $ sql-sink
114
+ let _ = sqlx:: query ( prepared_query_1. as_str ( ) ) . bind ( & const_string) . execute ( & mut conn) . await ?; // $ sql-sink
115
115
if enable_remote {
116
- let _ = sqlx:: query ( unsafe_query_1. as_str ( ) ) . execute ( & mut conn) . await ?; // $ MISSING: sql-sink Alert[sql-injection]=remote2
117
- let _ = sqlx:: query ( prepared_query_1. as_str ( ) ) . bind ( & remote_string) . execute ( & mut conn) . await ?; // $ MISSING: sql-sink
116
+ let _ = sqlx:: query ( unsafe_query_1. as_str ( ) ) . execute ( & mut conn) . await ?; // $ sql-sink MISSING: Alert[sql-injection]=remote2
117
+ let _ = sqlx:: query ( prepared_query_1. as_str ( ) ) . bind ( & remote_string) . execute ( & mut conn) . await ?; // $ sql-sink
118
118
}
119
119
// ...
120
- let _ = sqlx:: query ( safe_query_1. as_str ( ) ) . fetch ( & mut conn) ; // $ MISSING: sql-sink
121
- let _ = sqlx:: query ( prepared_query_1. as_str ( ) ) . bind ( & const_string) . fetch ( & mut conn) ; // $ MISSING: sql-sink
120
+ let _ = sqlx:: query ( safe_query_1. as_str ( ) ) . fetch ( & mut conn) ; // $ sql-sink
121
+ let _ = sqlx:: query ( prepared_query_1. as_str ( ) ) . bind ( & const_string) . fetch ( & mut conn) ; // $ sql-sink
122
122
if enable_remote {
123
- let _ = sqlx:: query ( unsafe_query_1. as_str ( ) ) . fetch ( & mut conn) ; // $ MISSING: ql -sink Alert[sql-injection]=remote2
124
- let _ = sqlx:: query ( prepared_query_1. as_str ( ) ) . bind ( & remote_string) . fetch ( & mut conn) ; // $ MISSING: sql-sink
123
+ let _ = sqlx:: query ( unsafe_query_1. as_str ( ) ) . fetch ( & mut conn) ; // $ sql -sink MISSING: Alert[sql-injection]=remote2
124
+ let _ = sqlx:: query ( prepared_query_1. as_str ( ) ) . bind ( & remote_string) . fetch ( & mut conn) ; // $ sql-sink
125
125
}
126
126
// ...
127
- let row1: ( i64 , String , String ) = sqlx:: query_as ( safe_query_1. as_str ( ) ) . fetch_one ( & mut conn) . await ?; // $ MISSING: sql-sink
127
+ let row1: ( i64 , String , String ) = sqlx:: query_as ( safe_query_1. as_str ( ) ) . fetch_one ( & mut conn) . await ?; // $ sql-sink
128
128
println ! ( " row1 = {:?}" , row1) ;
129
- let row2: ( i64 , String , String ) = sqlx:: query_as ( prepared_query_1. as_str ( ) ) . bind ( & const_string) . fetch_one ( & mut conn) . await ?; // $ MISSING: sql-sink
129
+ let row2: ( i64 , String , String ) = sqlx:: query_as ( prepared_query_1. as_str ( ) ) . bind ( & const_string) . fetch_one ( & mut conn) . await ?; // $ sql-sink
130
130
println ! ( " row2 = {:?}" , row2) ;
131
131
if enable_remote {
132
- let _: ( i64 , String , String ) = sqlx:: query_as ( unsafe_query_1. as_str ( ) ) . fetch_one ( & mut conn) . await ?; // $ MISSING: sql-sink Alert[sql-injection]=remote2
133
- let _: ( i64 , String , String ) = sqlx:: query_as ( prepared_query_1. as_str ( ) ) . bind ( & remote_string) . fetch_one ( & mut conn) . await ?; // $ MISSING: sql-sink
132
+ let _: ( i64 , String , String ) = sqlx:: query_as ( unsafe_query_1. as_str ( ) ) . fetch_one ( & mut conn) . await ?; // $ sql-sink MISSING: Alert[sql-injection]=remote2
133
+ let _: ( i64 , String , String ) = sqlx:: query_as ( prepared_query_1. as_str ( ) ) . bind ( & remote_string) . fetch_one ( & mut conn) . await ?; // $ sql-sink
134
134
}
135
135
// ...
136
- let row3: ( i64 , String , String ) = sqlx:: query_as ( safe_query_1. as_str ( ) ) . fetch_optional ( & mut conn) . await ?. expect ( "no data" ) ; // $ MISSING: sql-sink
136
+ let row3: ( i64 , String , String ) = sqlx:: query_as ( safe_query_1. as_str ( ) ) . fetch_optional ( & mut conn) . await ?. expect ( "no data" ) ; // $ sql-sink
137
137
println ! ( " row3 = {:?}" , row3) ;
138
- let row4: ( i64 , String , String ) = sqlx:: query_as ( prepared_query_1. as_str ( ) ) . bind ( & const_string) . fetch_optional ( & mut conn) . await ?. expect ( "no data" ) ; // $ MISSING: sql-sink
138
+ let row4: ( i64 , String , String ) = sqlx:: query_as ( prepared_query_1. as_str ( ) ) . bind ( & const_string) . fetch_optional ( & mut conn) . await ?. expect ( "no data" ) ; // $ sql-sink
139
139
println ! ( " row4 = {:?}" , row4) ;
140
140
if enable_remote {
141
- let _: ( i64 , String , String ) = sqlx:: query_as ( unsafe_query_1. as_str ( ) ) . fetch_optional ( & mut conn) . await ?. expect ( "no data" ) ; // $ MISSING: sql-sink Alert[sql-injection]=remote2
142
- let _: ( i64 , String , String ) = sqlx:: query_as ( prepared_query_1. as_str ( ) ) . bind ( & remote_string) . fetch_optional ( & mut conn) . await ?. expect ( "no data" ) ; // $ MISSING: sql-sink
141
+ let _: ( i64 , String , String ) = sqlx:: query_as ( unsafe_query_1. as_str ( ) ) . fetch_optional ( & mut conn) . await ?. expect ( "no data" ) ; // $ sql-sink $ MISSING: Alert[sql-injection]=remote2
142
+ let _: ( i64 , String , String ) = sqlx:: query_as ( prepared_query_1. as_str ( ) ) . bind ( & remote_string) . fetch_optional ( & mut conn) . await ?. expect ( "no data" ) ; // $ sql-sink
143
143
}
144
144
// ...
145
- let _ = sqlx:: query ( safe_query_1. as_str ( ) ) . fetch_all ( & mut conn) . await ?; // $ MISSING: sql-sink
146
- let _ = sqlx:: query ( prepared_query_1. as_str ( ) ) . bind ( & const_string) . fetch_all ( & mut conn) . await ?; // $ MISSING: sql-sink
147
- let _ = sqlx:: query ( "SELECT * FROM people WHERE firstname=?" ) . bind ( & const_string) . fetch_all ( & mut conn) . await ?; // $ MISSING: sql-sink
145
+ let _ = sqlx:: query ( safe_query_1. as_str ( ) ) . fetch_all ( & mut conn) . await ?; // $ sql-sink
146
+ let _ = sqlx:: query ( prepared_query_1. as_str ( ) ) . bind ( & const_string) . fetch_all ( & mut conn) . await ?; // $ sql-sink
147
+ let _ = sqlx:: query ( "SELECT * FROM people WHERE firstname=?" ) . bind ( & const_string) . fetch_all ( & mut conn) . await ?; // $ sql-sink
148
148
if enable_remote {
149
- let _ = sqlx:: query ( unsafe_query_1. as_str ( ) ) . fetch_all ( & mut conn) . await ?; // $ MISSING: sql-sink Alert[sql-injection]=remote2
150
- let _ = sqlx:: query ( prepared_query_1. as_str ( ) ) . bind ( & remote_string) . fetch_all ( & mut conn) . await ?; // $ MISSING: sql-sink
151
- let _ = sqlx:: query ( "SELECT * FROM people WHERE firstname=?" ) . bind ( & remote_string) . fetch_all ( & mut conn) . await ?; // $ MISSING: sql-sink
149
+ let _ = sqlx:: query ( unsafe_query_1. as_str ( ) ) . fetch_all ( & mut conn) . await ?; // $ sql-sink MISSING: Alert[sql-injection]=remote2
150
+ let _ = sqlx:: query ( prepared_query_1. as_str ( ) ) . bind ( & remote_string) . fetch_all ( & mut conn) . await ?; // $ sql-sink
151
+ let _ = sqlx:: query ( "SELECT * FROM people WHERE firstname=?" ) . bind ( & remote_string) . fetch_all ( & mut conn) . await ?; // $ sql-sink
152
152
}
153
153
// ...
154
154
let _ = sqlx:: query!( "SELECT * FROM people WHERE firstname=$1" , const_string) . fetch_all ( & mut conn) . await ?; // $ MISSING: sql-sink (only takes string literals, so can't be vulnerable)
@@ -172,17 +172,17 @@ async fn test_sqlx_postgres(url: &str, enable_remote: bool) -> Result<(), sqlx::
172
172
let prepared_query_1 = String :: from ( "SELECT * FROM people WHERE firstname=$1" ) ; // (prepared arguments are safe)
173
173
174
174
// direct execution
175
- let _ = conn. execute ( safe_query_1. as_str ( ) ) . await ?; // $ MISSING: sql-sink
175
+ let _ = conn. execute ( safe_query_1. as_str ( ) ) . await ?; // $ sql-sink
176
176
if enable_remote {
177
- let _ = conn. execute ( unsafe_query_1. as_str ( ) ) . await ?; // $ MISSING: sql-sink Alert[sql-injection]=remote3
177
+ let _ = conn. execute ( unsafe_query_1. as_str ( ) ) . await ?; // $ sql-sink MISSING: Alert[sql-injection]=remote3
178
178
}
179
179
180
180
// prepared queries
181
- let _ = sqlx:: query ( safe_query_1. as_str ( ) ) . execute ( & pool) . await ?; // $ MISSING: sql-sink
182
- let _ = sqlx:: query ( prepared_query_1. as_str ( ) ) . bind ( & const_string) . execute ( & pool) . await ?; // $ MISSING: sql-sink
181
+ let _ = sqlx:: query ( safe_query_1. as_str ( ) ) . execute ( & pool) . await ?; // $ sql-sink
182
+ let _ = sqlx:: query ( prepared_query_1. as_str ( ) ) . bind ( & const_string) . execute ( & pool) . await ?; // $ sql-sink
183
183
if enable_remote {
184
- let _ = sqlx:: query ( unsafe_query_1. as_str ( ) ) . execute ( & pool) . await ?; // $ MISSING: sql-sink Alert[sql-injection]=remote3
185
- let _ = sqlx:: query ( prepared_query_1. as_str ( ) ) . bind ( & remote_string) . execute ( & pool) . await ?; // $ MISSING: sql-sink
184
+ let _ = sqlx:: query ( unsafe_query_1. as_str ( ) ) . execute ( & pool) . await ?; // $ sql-sink MISSING: Alert[sql-injection]=remote3
185
+ let _ = sqlx:: query ( prepared_query_1. as_str ( ) ) . bind ( & remote_string) . execute ( & pool) . await ?; // $ sql-sink
186
186
}
187
187
188
188
Ok ( ( ) )
0 commit comments