@@ -110,72 +110,51 @@ private class SQLiteSinkCsv extends SinkModelCsv {
110
110
}
111
111
}
112
112
113
- private class QueryBuilderBuildMethod extends TaintPreservingCallable {
114
- int argument ;
115
-
116
- QueryBuilderBuildMethod ( ) {
117
- this .getDeclaringType ( ) .getASourceSupertype * ( ) instanceof TypeSQLiteQueryBuilder and
118
- (
119
- // buildQuery(String[] projectionIn, String selection, String groupBy, String having, String sortOrder, String limit)
120
- // buildQuery(String[] projectionIn, String selection, String[] selectionArgs, String groupBy, String having, String sortOrder, String limit)
121
- // buildUnionQuery(String[] subQueries, String sortOrder, String limit)
122
- this .hasName ( [ "buildQuery" , "buildUnionQuery" ] ) and
123
- argument = [ - 1 .. getNumberOfParameters ( ) ]
124
- or
125
- // buildUnionSubQuery(String typeDiscriminatorColumn, String[] unionColumns, Set<String> columnsPresentInTable, int computedColumnsOffset, String typeDiscriminatorValue, String selection, String[] selectionArgs, String groupBy, String having)
126
- // buildUnionSubQuery(String typeDiscriminatorColumn, String[] unionColumns, Set<String> columnsPresentInTable, int computedColumnsOffset, String typeDiscriminatorValue, String selection, String groupBy, String having)
127
- this .hasName ( "buildUnionSubQuery" ) and
128
- argument = [ - 1 .. getNumberOfParameters ( ) ] and
129
- argument != 3
130
- or
131
- // static buildQueryString(boolean distinct, String tables, String[] columns, String where, String groupBy, String having, String orderBy, String limit)
132
- hasName ( "buildQueryString" ) and
133
- argument = [ 1 .. getNumberOfParameters ( ) ]
134
- )
135
- }
136
-
137
- override predicate returnsTaintFrom ( int arg ) { argument = arg }
138
- }
139
-
140
- private class QueryBuilderAppendMethod extends TaintPreservingCallable {
141
- QueryBuilderAppendMethod ( ) {
142
- this .getDeclaringType ( ) .getASourceSupertype * ( ) instanceof TypeSQLiteQueryBuilder and
143
- // setProjectionMap(Map<String, String> columnMap)
144
- // setTables(String inTables)
145
- // appendWhere(CharSequence inWhere)
146
- // appendWhereStandalone(CharSequence inWhere)
147
- // static appendColumns(StringBuilder s, String[] columns)
148
- this .hasName ( [
149
- "setProjectionMap" , "setTables" , "appendWhere" , "appendWhereStandalone" , "appendColumns"
150
- ] )
151
- }
152
-
153
- override predicate transfersTaint ( int src , int sink ) {
154
- if hasName ( "appendColumns" ) then ( src = 1 and sink = 0 ) else ( src = 0 and sink = - 1 )
155
- }
156
- }
157
-
158
- private class UnsafeAppendUtilMethod extends TaintPreservingCallable {
159
- UnsafeAppendUtilMethod ( ) {
160
- this .getDeclaringType ( ) instanceof TypeDatabaseUtils and
161
- // String[] appendSelectionArgs(String[] originalValues, String[] newValues)
162
- // String concatenateWhere(String a, String b)
163
- this .hasName ( [ "appendSelectionArgs" , "concatenateWhere" ] )
164
- }
165
-
166
- override predicate returnsTaintFrom ( int arg ) { arg = [ 0 .. getNumberOfParameters ( ) ] }
167
- }
168
-
169
- private class TaintPreservingQueryMethod extends TaintPreservingCallable {
170
- TaintPreservingQueryMethod ( ) {
171
- (
172
- this .getDeclaringType ( ) instanceof AndroidContentProvider or
173
- this .getDeclaringType ( ) instanceof AndroidContentResolver
174
- ) and
175
- // Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder, CancellationSignal cancellationSignal)
176
- // Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
177
- this .hasName ( "query" )
113
+ private class SqlFlowStep extends SummaryModelCsv {
114
+ override predicate row ( string row ) {
115
+ row =
116
+ [
117
+ //"package;type;overrides;name;signature;ext;inputspec;outputspec;kind",
118
+ // buildQuery(String[] projectionIn, String selection, String groupBy, String having, String sortOrder, String limit)
119
+ // buildQuery(String[] projectionIn, String selection, String[] selectionArgs, String groupBy, String having, String sortOrder, String limit)
120
+ // buildUnionQuery(String[] subQueries, String sortOrder, String limit)
121
+ "android.database.sqlite;SQLiteQueryBuilder;true;buildQuery;(String[],String,String,String,String,String);;Argument[-1];ReturnValue;taint" ,
122
+ "android.database.sqlite;SQLiteQueryBuilder;true;buildQuery;(String[],String,String,String,String,String);;ArrayElement of Argument[0];ReturnValue;taint" ,
123
+ "android.database.sqlite;SQLiteQueryBuilder;true;buildQuery;(String[],String,String,String,String,String);;Argument[1..5];ReturnValue;taint" ,
124
+ "android.database.sqlite;SQLiteQueryBuilder;true;buildQuery;(String[],String,String[],String,String,String,String);;Argument[-1];ReturnValue;taint" ,
125
+ "android.database.sqlite;SQLiteQueryBuilder;true;buildQuery;(String[],String,String[],String,String,String,String);;ArrayElement of Argument[0];ReturnValue;taint" ,
126
+ "android.database.sqlite;SQLiteQueryBuilder;true;buildQuery;(String[],String,String[],String,String,String,String);;Argument[1];ReturnValue;taint" ,
127
+ "android.database.sqlite;SQLiteQueryBuilder;true;buildQuery;(String[],String,String[],String,String,String,String);;Argument[3..6];ReturnValue;taint" ,
128
+ "android.database.sqlite;SQLiteQueryBuilder;true;buildUnionQuery;(String[],String,String);;Argument[-1];ReturnValue;taint" ,
129
+ "android.database.sqlite;SQLiteQueryBuilder;true;buildUnionQuery;(String[],String,String);;ArrayElement of Argument[0];ReturnValue;taint" ,
130
+ "android.database.sqlite;SQLiteQueryBuilder;true;buildUnionQuery;(String[],String,String);;Argument[1..2];ReturnValue;taint" ,
131
+ // buildUnionSubQuery(String typeDiscriminatorColumn, String[] unionColumns, Set<String> columnsPresentInTable, int computedColumnsOffset, String typeDiscriminatorValue, String selection, String[] selectionArgs, String groupBy, String having)
132
+ // buildUnionSubQuery(String typeDiscriminatorColumn, String[] unionColumns, Set<String> columnsPresentInTable, int computedColumnsOffset, String typeDiscriminatorValue, String selection, String groupBy, String having)
133
+ "android.database.sqlite;SQLiteQueryBuilder;true;buildUnionSubQuery;(String,String[],Set,int,String,String,String[],String,String);;Argument[-1..0];ReturnValue;taint" ,
134
+ "android.database.sqlite;SQLiteQueryBuilder;true;buildUnionSubQuery;(String,String[],Set,int,String,String,String[],String,String);;ArrayElement of Argument[1];ReturnValue;taint" ,
135
+ "android.database.sqlite;SQLiteQueryBuilder;true;buildUnionSubQuery;(String,String[],Set,int,String,String,String[],String,String);;Element of Argument[2];ReturnValue;taint" ,
136
+ "android.database.sqlite;SQLiteQueryBuilder;true;buildUnionSubQuery;(String,String[],Set,int,String,String,String[],String,String);;Argument[4..5];ReturnValue;taint" ,
137
+ "android.database.sqlite;SQLiteQueryBuilder;true;buildUnionSubQuery;(String,String[],Set,int,String,String,String[],String,String);;Argument[7..8];ReturnValue;taint" ,
138
+ "android.database.sqlite;SQLiteQueryBuilder;true;buildUnionSubQuery;(String,String[],Set,int,String,String,String,String);;Argument[-1..0];ReturnValue;taint" ,
139
+ "android.database.sqlite;SQLiteQueryBuilder;true;buildUnionSubQuery;(String,String[],Set,int,String,String,String,String);;ArrayElement of Argument[1];ReturnValue;taint" ,
140
+ "android.database.sqlite;SQLiteQueryBuilder;true;buildUnionSubQuery;(String,String[],Set,int,String,String,String,String);;Element of Argument[2];ReturnValue;taint" ,
141
+ "android.database.sqlite;SQLiteQueryBuilder;true;buildUnionSubQuery;(String,String[],Set,int,String,String,String,String);;Argument[4..7];ReturnValue;taint" ,
142
+ // static buildQueryString(boolean distinct, String tables, String[] columns, String where, String groupBy, String having, String orderBy, String limit)
143
+ "android.database.sqlite;SQLiteQueryBuilder;true;buildQueryString;(boolean,String,String[],String,String,String,String,String);;Argument[1];ReturnValue;taint" ,
144
+ "android.database.sqlite;SQLiteQueryBuilder;true;buildQueryString;(boolean,String,String[],String,String,String,String,String);;ArrayElement of Argument[2];ReturnValue;taint" ,
145
+ "android.database.sqlite;SQLiteQueryBuilder;true;buildQueryString;(boolean,String,String[],String,String,String,String,String);;Argument[3..7];ReturnValue;taint" ,
146
+ "android.database.sqlite;SQLiteQueryBuilder;true;setProjectionMap;(Map);;MapKey of Argument[0];Argument[-1];taint" ,
147
+ "android.database.sqlite;SQLiteQueryBuilder;true;setProjectionMap;(Map);;MapValue of Argument[0];Argument[-1];taint" ,
148
+ "android.database.sqlite;SQLiteQueryBuilder;true;setTables;(String);;Argument[0];Argument[-1];taint" ,
149
+ "android.database.sqlite;SQLiteQueryBuilder;true;appendWhere;(CharSequence);;Argument[0];Argument[-1];taint" ,
150
+ "android.database.sqlite;SQLiteQueryBuilder;true;appendWhereStandalone;(CharSequence);;Argument[0];Argument[-1];taint" ,
151
+ "android.database.sqlite;SQLiteQueryBuilder;true;appendColumns;(StringBuilder,String[]);;ArrayElement of Argument[1];Argument[0];taint" ,
152
+ "android.database;DatabaseUtils;false;appendSelectionArgs;(String[],String[]);;ArrayElement of Argument[0..1];ArrayElement of ReturnValue;taint" ,
153
+ "android.database;DatabaseUtils;false;concatenateWhere;(String,String);;Argument[0..1];ReturnValue;taint" ,
154
+ "android.content;ContentProvider;true;query;(Uri,String[],String,String[],String);;Argument[0];ReturnValue;taint" ,
155
+ "android.content;ContentProvider;true;query;(Uri,String[],String,String[],String,CancellationSignal);;Argument[0];ReturnValue;taint" ,
156
+ "android.content;ContentResolver;true;query;(Uri,String[],String,String[],String);;Argument[0];ReturnValue;taint" ,
157
+ "android.content;ContentResolver;true;query;(Uri,String[],String,String[],String,CancellationSignal);;Argument[0];ReturnValue;taint"
158
+ ]
178
159
}
179
-
180
- override predicate returnsTaintFrom ( int arg ) { arg = 0 }
181
160
}
0 commit comments