File tree Expand file tree Collapse file tree 3 files changed +22
-7
lines changed
lib/codeql/swift/elements/decl
src/queries/Security/CWE-089 Expand file tree Collapse file tree 3 files changed +22
-7
lines changed Original file line number Diff line number Diff line change 11private import codeql.swift.generated.decl.AbstractFunctionDecl
2+ private import codeql.swift.elements.decl.MethodDecl
23
4+ /**
5+ * A function.
6+ */
37class AbstractFunctionDecl extends Generated:: AbstractFunctionDecl {
48 override string toString ( ) { result = this .getName ( ) }
59
@@ -8,3 +12,10 @@ class AbstractFunctionDecl extends Generated::AbstractFunctionDecl {
812 */
913 predicate hasName ( string funcName ) { this .getName ( ) = funcName }
1014}
15+
16+ /**
17+ * A free (non-member) function.
18+ */
19+ class FreeFunctionDecl extends AbstractFunctionDecl {
20+ FreeFunctionDecl ( ) { not this instanceof MethodDecl }
21+ }
Original file line number Diff line number Diff line change @@ -9,6 +9,9 @@ private Decl getAMember(IterableDeclContext ctx) {
99 )
1010}
1111
12+ /**
13+ * A function that is a member of a class, struct, enum or protocol.
14+ */
1215class MethodDecl extends AbstractFunctionDecl {
1316 MethodDecl ( ) {
1417 this = getAMember ( any ( ClassDecl c ) )
Original file line number Diff line number Diff line change @@ -28,13 +28,14 @@ class CApiSqlSink extends SqlSink {
2828 CApiSqlSink ( ) {
2929 // `sqlite3_exec` and variants of `sqlite3_prepare`.
3030 exists ( CallExpr call |
31- call .getStaticTarget ( ) .getName ( ) =
32- [
33- "sqlite3_exec(_:_:_:_:_:)" , "sqlite3_prepare(_:_:_:_:_:)" ,
34- "sqlite3_prepare_v2(_:_:_:_:_:)" , "sqlite3_prepare_v3(_:_:_:_:_:_:)" ,
35- "sqlite3_prepare16(_:_:_:_:_:)" , "sqlite3_prepare16_v2(_:_:_:_:_:)" ,
36- "sqlite3_prepare16_v3(_:_:_:_:_:_:)"
37- ] and
31+ call .getStaticTarget ( )
32+ .( FreeFunctionDecl )
33+ .hasName ( [
34+ "sqlite3_exec(_:_:_:_:_:)" , "sqlite3_prepare(_:_:_:_:_:)" ,
35+ "sqlite3_prepare_v2(_:_:_:_:_:)" , "sqlite3_prepare_v3(_:_:_:_:_:_:)" ,
36+ "sqlite3_prepare16(_:_:_:_:_:)" , "sqlite3_prepare16_v2(_:_:_:_:_:)" ,
37+ "sqlite3_prepare16_v3(_:_:_:_:_:_:)"
38+ ] ) and
3839 call .getArgument ( 1 ) .getExpr ( ) = this .asExpr ( )
3940 )
4041 }
You can’t perform that action at this time.
0 commit comments