@@ -105,10 +105,6 @@ class TypeParam extends Interface {
105
105
TypeParam ( ) { this .hasQualifiedName ( "org.apache.ibatis.annotations" , "Param" ) }
106
106
}
107
107
108
- private class MyBatisAbstractSql extends RefType {
109
- MyBatisAbstractSql ( ) { this .hasQualifiedName ( "org.apache.ibatis.jdbc" , "AbstractSQL" ) }
110
- }
111
-
112
108
private class MyBatisProvider extends RefType {
113
109
MyBatisProvider ( ) {
114
110
this .hasQualifiedName ( "org.apache.ibatis.annotations" ,
@@ -129,7 +125,7 @@ class MyBatisInjectionSink extends DataFlow::Node {
129
125
a .getType ( ) instanceof MyBatisProvider and
130
126
m .getDeclaringType ( ) = a .getValue ( [ "type" , "value" ] ) .( TypeLiteral ) .getTypeName ( ) .getType ( ) and
131
127
m .hasName ( a .getValue ( "method" ) .( StringLiteral ) .getValue ( ) ) and
132
- this .asExpr ( ) = m .getBody ( ) .getAStmt ( ) .( ReturnStmt ) .getResult ( )
128
+ this .asExpr ( ) = m .getBody ( ) .getAStmt ( ) .( ReturnStmt ) .getEnclosingCallable ( )
133
129
)
134
130
}
135
131
}
@@ -157,41 +153,67 @@ private class MyBatisAbstractSqlToStringStep extends SummaryModelCsv {
157
153
}
158
154
}
159
155
160
- private class MyBatisAbstractSqlMethod extends string {
161
- string taintedArgs ;
162
- string signature ;
163
-
164
- MyBatisAbstractSqlMethod ( ) {
165
- this in [
166
- "UPDATE" , "SET" , "INSERT_INTO" , "SELECT" , "OFFSET_ROWS" , "LIMIT" , "OFFSET" ,
167
- "FETCH_FIRST_ROWS_ONLY" , "DELETE_FROM" , "INNER_JOIN" , "ORDER_BY" , "WHERE" , "HAVING" ,
168
- "OUTER_JOIN" , "LEFT_OUTER_JOIN" , "RIGHT_OUTER_JOIN" , "GROUP_BY" , "FROM" , "SELECT_DISTINCT"
169
- ] and
170
- taintedArgs = "Argument[0]" and
171
- signature = "String"
172
- or
173
- this in [
174
- "SET" , "INTO_COLUMNS" , "INTO_VALUES" , "SELECT_DISTINCT" , "FROM" , "JOIN" , "INNER_JOIN" ,
175
- "LEFT_OUTER_JOIN" , "RIGHT_OUTER_JOIN" , "OUTER_JOIN" , "WHERE" , "GROUP_BY" , "HAVING" ,
176
- "ORDER_BY"
177
- ] and
178
- taintedArgs = "Argument[0].ArrayElement" and
179
- signature = "String[]"
180
- or
181
- this = "VALUES" and taintedArgs = "Argument[0..1]" and signature = "String,String"
182
- }
183
-
184
- string getTaintedArgs ( ) { result = taintedArgs }
185
-
186
- string getCsvSignature ( ) { result = signature }
187
- }
188
-
189
156
private class MyBatisAbstractSqlMethodsStep extends SummaryModelCsv {
190
157
override predicate row ( string row ) {
191
- exists ( MyBatisAbstractSqlMethod m |
192
- row =
193
- "org.apache.ibatis.jdbc;AbstractSQL;true;" + m + ";(" + m .getCsvSignature ( ) + ");;" +
194
- m .getTaintedArgs ( ) + ";Argument[-1];taint"
195
- )
158
+ row =
159
+ [
160
+ "org.apache.ibatis.jdbc;AbstractSQL;true;toString;;;Argument[-1];ReturnValue;taint" ,
161
+ "org.apache.ibatis.jdbc;AbstractSQL;true;WHERE;(String[]);;Argument[0];Argument[-1];taint" ,
162
+ "org.apache.ibatis.jdbc;AbstractSQL;true;WHERE;(String[]);;Argument[0].ArrayElement;Argument[-1];taint" ,
163
+ "org.apache.ibatis.jdbc;AbstractSQL;true;WHERE;(String);;Argument[0];Argument[-1];taint" ,
164
+ "org.apache.ibatis.jdbc;AbstractSQL;true;WHERE;(String);;Argument[0].ArrayElement;Argument[-1];taint" ,
165
+ "org.apache.ibatis.jdbc;AbstractSQL;true;VALUES;(String,String);;Argument[0..1];Argument[-1];taint" ,
166
+ "org.apache.ibatis.jdbc;AbstractSQL;true;UPDATE;(String);;Argument[0];Argument[-1];taint" ,
167
+ "org.apache.ibatis.jdbc;AbstractSQL;true;SET;(String[]);;Argument[0];Argument[-1];taint" ,
168
+ "org.apache.ibatis.jdbc;AbstractSQL;true;SET;(String[]);;Argument[0].ArrayElement;Argument[-1];taint" ,
169
+ "org.apache.ibatis.jdbc;AbstractSQL;true;SET;(String);;Argument[0];Argument[-1];taint" ,
170
+ "org.apache.ibatis.jdbc;AbstractSQL;true;SET;(String);;Argument[0].ArrayElement;Argument[-1];taint" ,
171
+ "org.apache.ibatis.jdbc;AbstractSQL;true;SELECT_DISTINCT;(String[]);;Argument[0];Argument[-1];taint" ,
172
+ "org.apache.ibatis.jdbc;AbstractSQL;true;SELECT_DISTINCT;(String[]);;Argument[0].ArrayElement;Argument[-1];taint" ,
173
+ "org.apache.ibatis.jdbc;AbstractSQL;true;SELECT_DISTINCT;(String);;Argument[0];Argument[-1];taint" ,
174
+ "org.apache.ibatis.jdbc;AbstractSQL;true;SELECT_DISTINCT;(String);;Argument[0].ArrayElement;Argument[-1];taint" ,
175
+ "org.apache.ibatis.jdbc;AbstractSQL;true;SELECT;(String);;Argument[0];Argument[-1];taint" ,
176
+ "org.apache.ibatis.jdbc;AbstractSQL;true;RIGHT_OUTER_JOIN;(String[]);;Argument[0];Argument[-1];taint" ,
177
+ "org.apache.ibatis.jdbc;AbstractSQL;true;RIGHT_OUTER_JOIN;(String[]);;Argument[0].ArrayElement;Argument[-1];taint" ,
178
+ "org.apache.ibatis.jdbc;AbstractSQL;true;RIGHT_OUTER_JOIN;(String);;Argument[0];Argument[-1];taint" ,
179
+ "org.apache.ibatis.jdbc;AbstractSQL;true;RIGHT_OUTER_JOIN;(String);;Argument[0].ArrayElement;Argument[-1];taint" ,
180
+ "org.apache.ibatis.jdbc;AbstractSQL;true;OUTER_JOIN;(String[]);;Argument[0];Argument[-1];taint" ,
181
+ "org.apache.ibatis.jdbc;AbstractSQL;true;OUTER_JOIN;(String[]);;Argument[0].ArrayElement;Argument[-1];taint" ,
182
+ "org.apache.ibatis.jdbc;AbstractSQL;true;OUTER_JOIN;(String);;Argument[0];Argument[-1];taint" ,
183
+ "org.apache.ibatis.jdbc;AbstractSQL;true;OUTER_JOIN;(String);;Argument[0].ArrayElement;Argument[-1];taint" ,
184
+ "org.apache.ibatis.jdbc;AbstractSQL;true;ORDER_BY;(String[]);;Argument[0];Argument[-1];taint" ,
185
+ "org.apache.ibatis.jdbc;AbstractSQL;true;ORDER_BY;(String[]);;Argument[0].ArrayElement;Argument[-1];taint" ,
186
+ "org.apache.ibatis.jdbc;AbstractSQL;true;ORDER_BY;(String);;Argument[0];Argument[-1];taint" ,
187
+ "org.apache.ibatis.jdbc;AbstractSQL;true;ORDER_BY;(String);;Argument[0].ArrayElement;Argument[-1];taint" ,
188
+ "org.apache.ibatis.jdbc;AbstractSQL;true;OFFSET_ROWS;(String);;Argument[0];Argument[-1];taint" ,
189
+ "org.apache.ibatis.jdbc;AbstractSQL;true;OFFSET;(String);;Argument[0];Argument[-1];taint" ,
190
+ "org.apache.ibatis.jdbc;AbstractSQL;true;LIMIT;(String);;Argument[0];Argument[-1];taint" ,
191
+ "org.apache.ibatis.jdbc;AbstractSQL;true;LEFT_OUTER_JOIN;(String[]);;Argument[0];Argument[-1];taint" ,
192
+ "org.apache.ibatis.jdbc;AbstractSQL;true;LEFT_OUTER_JOIN;(String[]);;Argument[0].ArrayElement;Argument[-1];taint" ,
193
+ "org.apache.ibatis.jdbc;AbstractSQL;true;LEFT_OUTER_JOIN;(String);;Argument[0];Argument[-1];taint" ,
194
+ "org.apache.ibatis.jdbc;AbstractSQL;true;LEFT_OUTER_JOIN;(String);;Argument[0].ArrayElement;Argument[-1];taint" ,
195
+ "org.apache.ibatis.jdbc;AbstractSQL;true;JOIN;(String[]);;Argument[0].ArrayElement;Argument[-1];taint" ,
196
+ "org.apache.ibatis.jdbc;AbstractSQL;true;INTO_VALUES;(String[]);;Argument[0].ArrayElement;Argument[-1];taint" ,
197
+ "org.apache.ibatis.jdbc;AbstractSQL;true;INTO_COLUMNS;(String[]);;Argument[0].ArrayElement;Argument[-1];taint" ,
198
+ "org.apache.ibatis.jdbc;AbstractSQL;true;INSERT_INTO;(String);;Argument[0];Argument[-1];taint" ,
199
+ "org.apache.ibatis.jdbc;AbstractSQL;true;INNER_JOIN;(String[]);;Argument[0];Argument[-1];taint" ,
200
+ "org.apache.ibatis.jdbc;AbstractSQL;true;INNER_JOIN;(String[]);;Argument[0].ArrayElement;Argument[-1];taint" ,
201
+ "org.apache.ibatis.jdbc;AbstractSQL;true;INNER_JOIN;(String);;Argument[0];Argument[-1];taint" ,
202
+ "org.apache.ibatis.jdbc;AbstractSQL;true;INNER_JOIN;(String);;Argument[0].ArrayElement;Argument[-1];taint" ,
203
+ "org.apache.ibatis.jdbc;AbstractSQL;true;HAVING;(String[]);;Argument[0];Argument[-1];taint" ,
204
+ "org.apache.ibatis.jdbc;AbstractSQL;true;HAVING;(String[]);;Argument[0].ArrayElement;Argument[-1];taint" ,
205
+ "org.apache.ibatis.jdbc;AbstractSQL;true;HAVING;(String);;Argument[0];Argument[-1];taint" ,
206
+ "org.apache.ibatis.jdbc;AbstractSQL;true;HAVING;(String);;Argument[0].ArrayElement;Argument[-1];taint" ,
207
+ "org.apache.ibatis.jdbc;AbstractSQL;true;GROUP_BY;(String[]);;Argument[0];Argument[-1];taint" ,
208
+ "org.apache.ibatis.jdbc;AbstractSQL;true;GROUP_BY;(String[]);;Argument[0].ArrayElement;Argument[-1];taint" ,
209
+ "org.apache.ibatis.jdbc;AbstractSQL;true;GROUP_BY;(String);;Argument[0];Argument[-1];taint" ,
210
+ "org.apache.ibatis.jdbc;AbstractSQL;true;GROUP_BY;(String);;Argument[0].ArrayElement;Argument[-1];taint" ,
211
+ "org.apache.ibatis.jdbc;AbstractSQL;true;FROM;(String[]);;Argument[0];Argument[-1];taint" ,
212
+ "org.apache.ibatis.jdbc;AbstractSQL;true;FROM;(String[]);;Argument[0].ArrayElement;Argument[-1];taint" ,
213
+ "org.apache.ibatis.jdbc;AbstractSQL;true;FROM;(String);;Argument[0];Argument[-1];taint" ,
214
+ "org.apache.ibatis.jdbc;AbstractSQL;true;FROM;(String);;Argument[0].ArrayElement;Argument[-1];taint" ,
215
+ "org.apache.ibatis.jdbc;AbstractSQL;true;FETCH_FIRST_ROWS_ONLY;(String);;Argument[0];Argument[-1];taint" ,
216
+ "org.apache.ibatis.jdbc;AbstractSQL;true;DELETE_FROM;(String);;Argument[0];Argument[-1];taint"
217
+ ]
196
218
}
197
219
}
0 commit comments