@@ -105,10 +105,6 @@ class TypeParam extends Interface {
105105 TypeParam ( ) { this .hasQualifiedName ( "org.apache.ibatis.annotations" , "Param" ) }
106106}
107107
108- private class MyBatisAbstractSql extends RefType {
109- MyBatisAbstractSql ( ) { this .hasQualifiedName ( "org.apache.ibatis.jdbc" , "AbstractSQL" ) }
110- }
111-
112108private class MyBatisProvider extends RefType {
113109 MyBatisProvider ( ) {
114110 this .hasQualifiedName ( "org.apache.ibatis.annotations" ,
@@ -129,7 +125,7 @@ class MyBatisInjectionSink extends DataFlow::Node {
129125 a .getType ( ) instanceof MyBatisProvider and
130126 m .getDeclaringType ( ) = a .getValue ( [ "type" , "value" ] ) .( TypeLiteral ) .getTypeName ( ) .getType ( ) and
131127 m .hasName ( a .getValue ( "method" ) .( StringLiteral ) .getValue ( ) ) and
132- this .asExpr ( ) = m .getBody ( ) .getAStmt ( ) .( ReturnStmt ) .getResult ( )
128+ this .asExpr ( ) = m .getBody ( ) .getAStmt ( ) .( ReturnStmt ) .getEnclosingCallable ( )
133129 )
134130 }
135131}
@@ -157,41 +153,67 @@ private class MyBatisAbstractSqlToStringStep extends SummaryModelCsv {
157153 }
158154}
159155
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-
189156private class MyBatisAbstractSqlMethodsStep extends SummaryModelCsv {
190157 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+ ]
196218 }
197219}
0 commit comments