Skip to content

Commit d0ca704

Browse files
committed
Swift: Fix some NSString models.
1 parent a59ed5b commit d0ca704

File tree

2 files changed

+8
-7
lines changed

2 files changed

+8
-7
lines changed

swift/ql/lib/codeql/swift/frameworks/StandardLibrary/NsString.qll

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ private class NsStringSummaries extends SummaryModelCsv {
8383
";NSString;true;lowercased(with:);;;Argument[-1];ReturnValue;taint",
8484
";NSString;true;uppercased(with:);;;Argument[-1];ReturnValue;taint",
8585
";NSString;true;capitalized(with:);;;Argument[-1];ReturnValue;taint",
86-
";NSString;true;components(separatedBy:);;;Argument[-1];ReturnValue;taint",
86+
";NSString;true;components(separatedBy:);;;Argument[-1];ReturnValue.CollectionElement;taint",
8787
";NSString;true;trimmingCharacters(in:);;;Argument[-1];ReturnValue;taint",
8888
";NSString;true;substring(from:);;;Argument[-1];ReturnValue;taint",
8989
";NSString;true;substring(with:);;;Argument[-1];ReturnValue;taint",
@@ -102,14 +102,15 @@ private class NsStringSummaries extends SummaryModelCsv {
102102
";NSString;true;stringEncoding(for:encodingOptions:convertedString:usedLossyCompression:);;;Argument[0];Argument[2];taint",
103103
";NSString;true;data(using:);;;Argument[-1];ReturnValue;taint",
104104
";NSString;true;data(using:allowLossyConversion:);;;Argument[-1];ReturnValue;taint",
105-
";NSString;true;path(withComponents:);;;Argument[0];ReturnValue;taint",
105+
";NSString;true;path(withComponents:);;;Argument[0].CollectionElement;ReturnValue;taint",
106106
";NSString;true;completePath(into:caseSensitive:matchesInto:filterTypes:);;;Argument[-1];Argument[0];taint",
107107
";NSString;true;completePath(into:caseSensitive:matchesInto:filterTypes:);;;Argument[-1];Argument[2];taint",
108108
";NSString;true;getFileSystemRepresentation(_:maxLength:);;;Argument[-1];Argument[0];taint",
109109
";NSString;true;appendingPathComponent(_:);;;Argument[-1..0];ReturnValue;taint",
110110
";NSString;true;appendingPathComponent(_:conformingTo:);;;Argument[-1..0];ReturnValue;taint",
111111
";NSString;true;appendingPathExtension(_:);;;Argument[-1..0];ReturnValue;taint",
112-
";NSString;true;strings(byAppendingPaths:);;;Argument[-1..0];ReturnValue;taint",
112+
";NSString;true;strings(byAppendingPaths:);;;Argument[-1];ReturnValue;taint",
113+
";NSString;true;strings(byAppendingPaths:);;;Argument[0].CollectionElement;ReturnValue;taint",
113114
";NSString;true;addingPercentEncoding(withAllowedCharacters:);;;Argument[-1];ReturnValue;taint",
114115
";NSString;true;string(withCString:);;;Argument[0];ReturnValue;taint",
115116
";NSString;true;string(withCString:length:);;;Argument[0];ReturnValue;taint",

swift/ql/test/library-tests/dataflow/taint/libraries/nsstring.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -275,8 +275,8 @@ func taintThroughInterpolatedStrings() {
275275
sink(arg: sourceNSString().replacingOccurrences(of: "a", with: "b", range: NSRange(location: 0, length: 10))) // $ tainted=275
276276
sink(arg: harmless.replacingOccurrences(of: "a", with: sourceString(), range: NSRange(location: 0, length: 10))) // $ tainted=276
277277
sink(arg: NSString.path(withComponents: ["a", "b", "c"]))
278-
sink(arg: NSString.path(withComponents: sourceStringArray())) // $ tainted=278
279-
sink(arg: NSString.path(withComponents: ["a", sourceString(), "c"])) // $ MISSING: tainted=
278+
sink(arg: NSString.path(withComponents: sourceStringArray())) // $ MISSING: tainted=278
279+
sink(arg: NSString.path(withComponents: ["a", sourceString(), "c"])) // $ tainted=279
280280
sink(arg: NSString.string(withCString: sourceCString())) // $ tainted=280
281281
sink(arg: NSString.string(withCString: sourceCString(), length: 128)) // $ tainted=281
282282
sink(arg: NSString.string(withContentsOfFile: sourceString())) // $ tainted=282
@@ -306,8 +306,8 @@ func taintThroughInterpolatedStrings() {
306306

307307
sink(arg: harmless.strings(byAppendingPaths: [""]))
308308
sink(arg: harmless.strings(byAppendingPaths: [""])[0])
309-
sink(arg: harmless.strings(byAppendingPaths: [sourceString()])) // $ MISSING: tainted=
310-
sink(arg: harmless.strings(byAppendingPaths: [sourceString()])[0]) // $ MISSING: tainted=
309+
sink(arg: harmless.strings(byAppendingPaths: [sourceString()])) // $ tainted=309
310+
sink(arg: harmless.strings(byAppendingPaths: [sourceString()])[0]) // $ tainted=310
311311
sink(arg: sourceNSString().strings(byAppendingPaths: [""])) // $ tainted=311
312312
sink(arg: sourceNSString().strings(byAppendingPaths: [""])[0]) // $ tainted=312
313313

0 commit comments

Comments
 (0)