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 1
1
private import codeql.swift.generated.decl.AbstractFunctionDecl
2
+ private import codeql.swift.elements.decl.MethodDecl
2
3
4
+ /**
5
+ * A function.
6
+ */
3
7
class AbstractFunctionDecl extends Generated:: AbstractFunctionDecl {
4
8
override string toString ( ) { result = this .getName ( ) }
5
9
@@ -8,3 +12,10 @@ class AbstractFunctionDecl extends Generated::AbstractFunctionDecl {
8
12
*/
9
13
predicate hasName ( string funcName ) { this .getName ( ) = funcName }
10
14
}
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) {
9
9
)
10
10
}
11
11
12
+ /**
13
+ * A function that is a member of a class, struct, enum or protocol.
14
+ */
12
15
class MethodDecl extends AbstractFunctionDecl {
13
16
MethodDecl ( ) {
14
17
this = getAMember ( any ( ClassDecl c ) )
Original file line number Diff line number Diff line change @@ -28,13 +28,14 @@ class CApiSqlSink extends SqlSink {
28
28
CApiSqlSink ( ) {
29
29
// `sqlite3_exec` and variants of `sqlite3_prepare`.
30
30
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
38
39
call .getArgument ( 1 ) .getExpr ( ) = this .asExpr ( )
39
40
)
40
41
}
You can’t perform that action at this time.
0 commit comments