@@ -75,58 +75,41 @@ private class RealmStore extends CleartextStorageDatabaseSink instanceof DataFlo
75
75
}
76
76
}
77
77
78
- /**
79
- * A `DataFlow::Node` that is an expression stored with the GRDB library.
80
- */
81
- private class GrdbStore extends CleartextStorageDatabaseSink {
82
- GrdbStore ( ) {
83
- exists ( CallExpr call , MethodDecl method |
84
- call .getStaticTarget ( ) = method and
85
- call .getArgumentWithLabel ( "arguments" ) .getExpr ( ) = this .asExpr ( )
86
- |
87
- method
88
- .hasQualifiedName ( "Database" ,
89
- [ "allStatements(sql:arguments:)" , "execute(sql:arguments:)" , ] )
90
- or
91
- method .hasQualifiedName ( "SQLRequest" , "init(sql:arguments:adapter:cached:)" )
92
- or
93
- method .hasQualifiedName ( "SQL" , [ "init(sql:arguments:)" , "append(sql:arguments:)" ] )
94
- or
95
- method .hasQualifiedName ( "SQLStatementCursor" , "init(database:sql:arguments:prepFlags:)" )
96
- or
97
- method
98
- .hasQualifiedName ( "TableRecord" ,
99
- [
100
- "select(sql:arguments:)" , "select(sql:arguments:as:)" , "filter(sql:arguments:)" ,
101
- "order(sql:arguments:)"
102
- ] )
103
- or
104
- method
105
- .hasQualifiedName ( [ "Row" , "DatabaseValueConvertible" , "FetchableRecord" ] ,
106
- [
107
- "fetchCursor(_:sql:arguments:adapter:)" , "fetchAll(_:sql:arguments:adapter:)" ,
108
- "fetchSet(_:sql:arguments:adapter:)" , "fetchOne(_:sql:arguments:adapter:)"
109
- ] )
110
- or
111
- method
112
- .hasQualifiedName ( "FetchableRecord" ,
113
- [
114
- "fetchCursor(_:arguments:adapter:)" , "fetchAll(_:arguments:adapter:)" ,
115
- "fetchSet(_:arguments:adapter:)" , "fetchOne(_:arguments:adapter:)" ,
116
- ] )
117
- or
118
- method .hasQualifiedName ( "Statement" , [ "execute(arguments:)" ] )
119
- or
120
- method
121
- .hasQualifiedName ( "CommonTableExpression" , "init(recursive:named:columns:sql:arguments:)" )
122
- )
123
- or
124
- exists ( CallExpr call , MethodDecl method |
125
- call .getStaticTarget ( ) = method and
126
- call .getArgument ( 0 ) .getExpr ( ) = this .asExpr ( )
127
- |
128
- method .hasQualifiedName ( "Statement" , "setArguments(_:)" )
129
- )
78
+ private class CleartextStorageDatabaseSinks extends SinkModelCsv {
79
+ override predicate row ( string row ) {
80
+ row =
81
+ [
82
+ // GRDB sinks
83
+ ";Database;true;allStatements(sql:arguments:);;;Argument[1];database-store" ,
84
+ ";Database;true;execute(sql:arguments:);;;Argument[1];database-store" ,
85
+ ";SQLRequest;true;init(sql:arguments:adapter:cached:);;;Argument[1];database-store" ,
86
+ ";SQL;true;init(sql:arguments:);;;Argument[1];database-store" ,
87
+ ";SQL;true;append(sql:arguments:);;;Argument[1];database-store" ,
88
+ ";SQLStatementCursor;true;init(database:sql:arguments:prepFlags:);;;Argument[2];database-store" ,
89
+ ";TableRecord;true;select(sql:arguments:);;;Argument[1];database-store" ,
90
+ ";TableRecord;true;select(sql:arguments:as:);;;Argument[1];database-store" ,
91
+ ";TableRecord;true;filter(sql:arguments:);;;Argument[1];database-store" ,
92
+ ";TableRecord;true;order(sql:arguments:);;;Argument[1];database-store" ,
93
+ ";Row;true;fetchCursor(_:sql:arguments:adapter:);;;Argument[2];database-store" ,
94
+ ";Row;true;fetchAll(_:sql:arguments:adapter:);;;Argument[2];database-store" ,
95
+ ";Row;true;fetchSet(_:sql:arguments:adapter:);;;Argument[2];database-store" ,
96
+ ";Row;true;fetchOne(_:sql:arguments:adapter:);;;Argument[2];database-store" ,
97
+ ";DatabaseValueConvertible;true;fetchCursor(_:sql:arguments:adapter:);;;Argument[2];database-store" ,
98
+ ";DatabaseValueConvertible;true;fetchAll(_:sql:arguments:adapter:);;;Argument[2];database-store" ,
99
+ ";DatabaseValueConvertible;true;fetchSet(_:sql:arguments:adapter:);;;Argument[2];database-store" ,
100
+ ";DatabaseValueConvertible;true;fetchOne(_:sql:arguments:adapter:);;;Argument[2];database-store" ,
101
+ ";FetchableRecord;true;fetchCursor(_:sql:arguments:adapter:);;;Argument[2];database-store" ,
102
+ ";FetchableRecord;true;fetchAll(_:sql:arguments:adapter:);;;Argument[2];database-store" ,
103
+ ";FetchableRecord;true;fetchSet(_:sql:arguments:adapter:);;;Argument[2];database-store" ,
104
+ ";FetchableRecord;true;fetchOne(_:sql:arguments:adapter:);;;Argument[2];database-store" ,
105
+ ";FetchableRecord;true;fetchCursor(_:arguments:adapter:);;;Argument[1];database-store" ,
106
+ ";FetchableRecord;true;fetchAll(_:arguments:adapter:);;;Argument[1];database-store" ,
107
+ ";FetchableRecord;true;fetchSet(_:arguments:adapter:);;;Argument[1];database-store" ,
108
+ ";FetchableRecord;true;fetchOne(_:arguments:adapter:);;;Argument[1];database-store" ,
109
+ ";Statement;true;execute(arguments:);;;Argument[0];database-store" ,
110
+ ";CommonTableExpression;true;init(recursive:named:columns:sql:arguments:);;;Argument[4];database-store" ,
111
+ ";Statement;true;setArguments(_:);;;Argument[0];database-store"
112
+ ]
130
113
}
131
114
}
132
115
0 commit comments