mirror of
https://github.com/github/codeql.git
synced 2026-05-01 19:55:15 +02:00
Swift: Test for pointer types.
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
|
||||
class MyClass {
|
||||
init() {
|
||||
val = 0
|
||||
}
|
||||
|
||||
var val: Int
|
||||
}
|
||||
|
||||
func test() {
|
||||
var p1: UnsafePointer<Int>
|
||||
var p2: UnsafeMutablePointer<UInt8>
|
||||
var p3: UnsafeBufferPointer<String>
|
||||
var p4: UnsafeMutableBufferPointer<MyClass>
|
||||
var p5: UnsafeRawPointer
|
||||
var p6: UnsafeMutableRawPointer
|
||||
var p7: UnsafeRawBufferPointer
|
||||
var p8: UnsafeMutableRawBufferPointer
|
||||
|
||||
var op: OpaquePointer // C-interop
|
||||
var aump: AutoreleasingUnsafeMutablePointer<UInt8> // ObjC-interop
|
||||
var um: Unmanaged<MyClass> // C-interop
|
||||
var cvlp: CVaListPointer // varargs list pointer
|
||||
|
||||
var mbp: ManagedBufferPointer<Int, MyClass>
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
| pointers.swift:11:6:11:6 | p1 | UnsafePointer<Int> | UnsafeTypedPointerType |
|
||||
| pointers.swift:12:6:12:6 | p2 | UnsafeMutablePointer<UInt8> | UnsafeTypedPointerType |
|
||||
| pointers.swift:13:6:13:6 | p3 | UnsafeBufferPointer<String> | UnsafeTypedPointerType |
|
||||
| pointers.swift:14:6:14:6 | p4 | UnsafeMutableBufferPointer<MyClass> | UnsafeTypedPointerType |
|
||||
| pointers.swift:15:6:15:6 | p5 | UnsafeRawPointer | UnsafeRawPointerType |
|
||||
| pointers.swift:16:6:16:6 | p6 | UnsafeMutableRawPointer | UnsafeRawPointerType |
|
||||
| pointers.swift:17:6:17:6 | p7 | UnsafeRawBufferPointer | UnsafeRawPointerType |
|
||||
| pointers.swift:18:6:18:6 | p8 | UnsafeMutableRawBufferPointer | UnsafeRawPointerType |
|
||||
| pointers.swift:20:6:20:6 | op | OpaquePointer | OpaquePointerType |
|
||||
| pointers.swift:21:6:21:6 | aump | AutoreleasingUnsafeMutablePointer<UInt8> | AutoreleasingUnsafeMutablePointerType |
|
||||
| pointers.swift:22:6:22:6 | um | Unmanaged<MyClass> | UnmanagedType |
|
||||
| pointers.swift:23:6:23:6 | cvlp | CVaListPointer | CVaListPointerType |
|
||||
| pointers.swift:25:6:25:6 | mbp | ManagedBufferPointer<Int, MyClass> | ManagedBufferPointerType |
|
||||
@@ -0,0 +1,26 @@
|
||||
import swift
|
||||
import codeql.swift.frameworks.StandardLibrary.PointerTypes
|
||||
|
||||
string describe(Type t) {
|
||||
t instanceof BuiltinRawPointerType and result = "BuiltinRawPointerType"
|
||||
or
|
||||
t instanceof UnsafeTypedPointerType and result = "UnsafeTypedPointerType"
|
||||
or
|
||||
t instanceof UnsafeRawPointerType and result = "UnsafeRawPointerType"
|
||||
or
|
||||
t instanceof OpaquePointerType and result = "OpaquePointerType"
|
||||
or
|
||||
t instanceof AutoreleasingUnsafeMutablePointerType and result = "AutoreleasingUnsafeMutablePointerType"
|
||||
or
|
||||
t instanceof UnmanagedType and result = "UnmanagedType"
|
||||
or
|
||||
t instanceof CVaListPointerType and result = "CVaListPointerType"
|
||||
or
|
||||
t instanceof ManagedBufferPointerType and result = "ManagedBufferPointerType"
|
||||
}
|
||||
|
||||
from VarDecl v, Type t
|
||||
where
|
||||
v.getLocation().getFile().getBaseName() != "" and
|
||||
t = v.getType()
|
||||
select v, t.toString(), strictconcat(describe(t), ", ")
|
||||
Reference in New Issue
Block a user