mirror of
https://github.com/github/codeql.git
synced 2025-12-17 01:03:14 +01:00
Swift: Proof of concept fix.
This commit is contained in:
@@ -211,6 +211,8 @@ private predicate modifiable(Argument arg) {
|
||||
arg.getExpr() instanceof InOutExpr
|
||||
or
|
||||
arg.getExpr().getType() instanceof NominalType
|
||||
or
|
||||
arg.getLabel() = "ptr"
|
||||
}
|
||||
|
||||
predicate modifiableParam(ParamDecl param) {
|
||||
|
||||
@@ -25,7 +25,7 @@ func taintPointer(ptr: UnsafeMutablePointer<String>) {
|
||||
}
|
||||
|
||||
func clearPointer2(ptr: UnsafeMutablePointer<String>) {
|
||||
sink(arg: ptr.pointee) // $ MISSING: tainted=21
|
||||
sink(arg: ptr.pointee) // $ tainted=21
|
||||
sink(arg: ptr)
|
||||
|
||||
ptr.pointee = "abc"
|
||||
@@ -42,12 +42,12 @@ func testMutatingPointerInCall(ptr: UnsafeMutablePointer<String>) {
|
||||
|
||||
taintPointer(ptr: ptr) // mutates `ptr` pointee with a tainted value
|
||||
|
||||
sink(arg: ptr.pointee) // $ MISSING: tainted=21
|
||||
sink(arg: ptr.pointee) // $ tainted=21
|
||||
sink(arg: ptr)
|
||||
|
||||
clearPointer2(ptr: ptr)
|
||||
|
||||
sink(arg: ptr.pointee)
|
||||
sink(arg: ptr.pointee) // $ SPURIOUS: tainted=21
|
||||
sink(arg: ptr)
|
||||
}
|
||||
|
||||
@@ -96,6 +96,6 @@ func testMutatingMyPointerInCall(ptr: MyPointer) {
|
||||
|
||||
taintMyPointer(ptr: ptr) // mutates `ptr` pointee with a tainted value
|
||||
|
||||
sink(arg: ptr.pointee) // $ MISSING: tainted=87
|
||||
sink(arg: ptr.pointee) // $ tainted=87
|
||||
sink(arg: ptr)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user