Skip to content

Commit d0efbbf

Browse files
committed
Swift: More path injection models.
1 parent 82f09b8 commit d0efbbf

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

swift/ql/lib/codeql/swift/security/PathInjectionExtensions.qll

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,11 @@ private class PathInjectionSinks extends SinkModelCsv {
108108
";NIOFileHandle;true;init(descriptor:);;;Argument[0];path-injection",
109109
";NIOFileHandle;true;init(path:mode:flags:);;;Argument[0];path-injection",
110110
";NIOFileHandle;true;init(path:);;;Argument[0];path-injection",
111+
";String;true;init(contentsOfFile:);;;Argument[0];path-injection",
112+
";String;true;init(contentsOfFile:encoding:);;;Argument[0];path-injection",
113+
";String;true;init(contentsOfFile:usedEncoding:);;;Argument[0];path-injection",
114+
";NSString;true;init(contentsOfFile:encoding:);;;Argument[0];path-injection",
115+
";NSString;true;init(contentsOfFile:usedEncoding:);;;Argument[0];path-injection",
111116
";NSString;true;write(to:atomically:encoding:);;;Argument[0];path-injection",
112117
";NSString;true;write(toFile:atomically:encoding:);;;Argument[0];path-injection",
113118
";NSKeyedUnarchiver;true;unarchiveObject(withFile:);;;Argument[0];path-injection",

swift/ql/test/query-tests/Security/CWE-022/testPathInjection.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -246,12 +246,12 @@ func test() {
246246
let _ = fm.replaceItemAtURL(originalItemURL: safeNsUrl, withItemAtURL: remoteNsUrl, backupItemName: nil, options: []) // $ hasPathInjection=182
247247

248248
var encoding = String.Encoding.utf8
249-
let _ = try! String(contentsOfFile: remoteString) // $ MISSING: hasPathInjection=232
250-
let _ = try! String(contentsOfFile: remoteString, encoding: String.Encoding.utf8) // $ MISSING: hasPathInjection=234
251-
let _ = try! String(contentsOfFile: remoteString, usedEncoding: &encoding) // $ MISSING: hasPathInjection=235
249+
let _ = try! String(contentsOfFile: remoteString) // $ hasPathInjection=182
250+
let _ = try! String(contentsOfFile: remoteString, encoding: String.Encoding.utf8) // $ hasPathInjection=182
251+
let _ = try! String(contentsOfFile: remoteString, usedEncoding: &encoding) // $ hasPathInjection=182
252252

253-
let _ = try! NSString(contentsOfFile: remoteString, encoding: 0) // $ MISSING: hasPathInjection=237
254-
let _ = try! NSString(contentsOfFile: remoteString, usedEncoding: nil) // $ MISSING: hasPathInjection=238
253+
let _ = try! NSString(contentsOfFile: remoteString, encoding: 0) // $ hasPathInjection=182
254+
let _ = try! NSString(contentsOfFile: remoteString, usedEncoding: nil) // $ hasPathInjection=182
255255
NSString().write(to: remoteUrl, atomically: true, encoding: 0) // $ hasPathInjection=182
256256
NSString().write(toFile: remoteString, atomically: true, encoding: 0) // $ hasPathInjection=182
257257

0 commit comments

Comments
 (0)