Skip to content

Commit c5285ac

Browse files
committed
Swift: Add more tests for String flow sources.
1 parent d813590 commit c5285ac

File tree

2 files changed

+40
-3
lines changed

2 files changed

+40
-3
lines changed

swift/ql/test/library-tests/dataflow/flowsources/FlowSources.expected

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
| customurlschemes.swift:38:52:38:62 | url | external |
44
| customurlschemes.swift:43:9:43:28 | ...[...] | Remote URL in UIApplicationDelegate.application.launchOptions |
55
| customurlschemes.swift:48:9:48:28 | ...[...] | Remote URL in UIApplicationDelegate.application.launchOptions |
6-
| string.swift:27:21:27:21 | call to init(contentsOf:) | external |
7-
| string.swift:27:21:27:44 | call to init(contentsOf:) | external |
6+
| string.swift:56:21:56:21 | call to init(contentsOf:) | external |
7+
| string.swift:56:21:56:44 | call to init(contentsOf:) | external |
88
| url.swift:53:15:53:19 | .resourceBytes | external |
99
| url.swift:60:15:60:19 | .lines | external |
1010
| url.swift:67:16:67:22 | .lines | external |

swift/ql/test/library-tests/dataflow/flowsources/string.swift

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,41 @@ struct URL
77
}
88

99
extension String {
10-
init(contentsOf: URL) throws {
10+
struct Encoding {
11+
var rawValue: UInt
12+
13+
init(rawValue: UInt) { self.rawValue = rawValue }
14+
15+
static let ascii = Encoding(rawValue: 1)
16+
}
17+
18+
init(contentsOf url: URL) throws {
1119
var data = ""
1220

1321
// ...
1422

1523
self.init(data)
1624
}
25+
26+
init(contentsOf url: URL, encoding enc: String.Encoding) throws {
27+
self.init("")
28+
}
29+
30+
init(contentsOf url: URL, usedEncoding: inout String.Encoding) throws {
31+
self.init("")
32+
}
33+
34+
init(contentsOfFile path: String) throws {
35+
self.init("")
36+
}
37+
38+
init(contentsOfFile path: String, encoding enc: String.Encoding) throws {
39+
self.init("")
40+
}
41+
42+
init(contentsOfFile path: String, usedEncoding: inout String.Encoding) throws {
43+
self.init("")
44+
}
1745
}
1846

1947
// --- tests ---
@@ -23,8 +51,17 @@ func testStrings() {
2351
{
2452
let string1 = String()
2553
let string2 = String(repeating: "abc", count: 10)
54+
2655
let url = URL(string: "http://example.com/")
2756
let string3 = try String(contentsOf: url!) // SOURCE
57+
let string4 = try String(contentsOf: url!, encoding: String.Encoding.ascii) // SOURCE [NOT DETECTED]
58+
var encoding = String.Encoding.ascii
59+
let string5 = try String(contentsOf: url!, usedEncoding: &encoding) // SOURCE [NOT DETECTED]
60+
61+
let path = "file.txt"
62+
let string6 = try String(contentsOfFile: path) // SOURCE [NOT DETECTED]
63+
let string7 = try String(contentsOfFile: path, encoding: String.Encoding.ascii) // SOURCE [NOT DETECTED]
64+
let string8 = try String(contentsOfFile: path, usedEncoding: &encoding) // SOURCE [NOT DETECTED]
2865
} catch {
2966
// ...
3067
}

0 commit comments

Comments
 (0)