diff --git a/unified/extractor/src/languages/swift/swift.rs b/unified/extractor/src/languages/swift/swift.rs index a1dab86b626e..935509454b40 100644 --- a/unified/extractor/src/languages/swift/swift.rs +++ b/unified/extractor/src/languages/swift/swift.rs @@ -638,6 +638,7 @@ fn translation_rules() -> Vec> { // an empty `block`. rule!( (functionDecl + attributes: _* @attrs modifiers: _* @mods name: @@name genericParameterClause: (genericParameterClause parameters: _* @type_params)? @@ -647,6 +648,7 @@ fn translation_rules() -> Vec> { body: (codeBlock) @body) => (function_declaration + modifier: {attrs} modifier: {mods} name_node: (identifier #{name}) type_parameter: {type_params} @@ -656,6 +658,7 @@ fn translation_rules() -> Vec> { ), rule!( (functionDecl + attributes: _* @attrs modifiers: _* @mods name: @@name genericParameterClause: (genericParameterClause parameters: _* @type_params)? @@ -664,6 +667,7 @@ fn translation_rules() -> Vec> { returnClause: (returnClause type: @ret)?)) => (function_declaration + modifier: {attrs} modifier: {mods} name_node: (identifier #{name}) type_parameter: {type_params} @@ -1456,12 +1460,14 @@ fn translation_rules() -> Vec> { rule!( (initializerDecl initKeyword: @@initK + attributes: _* @attrs modifiers: _* @mods signature: (functionSignature parameterClause: (functionParameterClause parameters: _* @params)) body: (codeBlock) @body) => (constructor_declaration + modifier: {attrs} modifier: {mods} name_node: (identifier #{initK}) parameter: {params} @@ -1470,11 +1476,13 @@ fn translation_rules() -> Vec> { rule!( (initializerDecl initKeyword: @@initK + attributes: _* @attrs modifiers: _* @mods signature: (functionSignature parameterClause: (functionParameterClause parameters: _* @params))) => (constructor_declaration + modifier: {attrs} modifier: {mods} name_node: (identifier #{initK}) parameter: {params} diff --git a/unified/extractor/tests/corpus/swift/functions/declaration-attributes.output b/unified/extractor/tests/corpus/swift/functions/declaration-attributes.output new file mode 100644 index 000000000000..7b3f3e5f4e1a --- /dev/null +++ b/unified/extractor/tests/corpus/swift/functions/declaration-attributes.output @@ -0,0 +1,135 @@ +class C { + @discardableResult public func f() -> Int { return 0 } + @available(*, unavailable) public init(x: Int) {} +} + +--- + +sourceFile + endOfFileToken: endOfFile + statements: + codeBlockItem + item: + classDecl + attributes: + name: identifier "C" + memberBlock: + memberBlock + leftBrace: { + rightBrace: } + members: + memberBlockItem + decl: + functionDecl + attributes: + attribute + atSign: @ + attributeName: + identifierType + name: identifier "discardableResult" + body: + codeBlock + leftBrace: { + rightBrace: } + statements: + codeBlockItem + item: + returnStmt + expression: + integerLiteralExpr + literal: integerLiteral "0" + returnKeyword: return + name: identifier "f" + modifiers: + declModifier + name: public + signature: + functionSignature + parameterClause: + functionParameterClause + leftParen: ( + rightParen: ) + parameters: + returnClause: + returnClause + arrow: -> + type: + identifierType + name: identifier "Int" + funcKeyword: func + memberBlockItem + decl: + initializerDecl + attributes: + attribute + leftParen: ( + rightParen: ) + arguments: + availabilityArgument + trailingComma: , + argument: binaryOperator "*" + availabilityArgument + argument: unavailable + atSign: @ + attributeName: + identifierType + name: identifier "available" + body: + codeBlock + leftBrace: { + rightBrace: } + statements: + modifiers: + declModifier + name: public + signature: + functionSignature + parameterClause: + functionParameterClause + leftParen: ( + rightParen: ) + parameters: + functionParameter + colon: : + attributes: + modifiers: + type: + identifierType + name: identifier "Int" + firstName: identifier "x" + initKeyword: init + modifiers: + classKeyword: class + +--- + +top_level source="⟨body⟩" + body: + block source="⟨stmt⟩" + stmt: + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩ {\n ⟨member⟩\n ⟨member⟩\n}" + modifier: modifier "class" source="class" + name_node: identifier "C" source="C" + member: + function_declaration source="⟨modifier⟩ ⟨modifier⟩ func ⟨name_node⟩() -> ⟨return_type⟩ ⟨body⟩" + modifier: + modifier "@discardableResult" source="@discardableResult" + modifier "public" source="public" + name_node: identifier "f" source="f" + return_type: identifier "Int" source="Int" + body: + block source="{ ⟨stmt⟩ }" + stmt: + return_expr source="return ⟨value⟩" + value: int_literal "0" source="0" + constructor_declaration source="⟨modifier⟩ ⟨modifier⟩ ⟨name_node⟩(⟨parameter⟩) ⟨body⟩" + modifier: + modifier "@available(*, unavailable)" source="@available(*, unavailable)" + modifier "public" source="public" + name_node: identifier "init" source="init" + parameter: + parameter source="⟨external_name_node⟩⟨pattern⟩: ⟨type⟩" + external_name_node: identifier "x" source="x" + type: identifier "Int" source="Int" + pattern: identifier "x" source="x" + body: block "{}" source="{}" diff --git a/unified/extractor/tests/corpus/swift/functions/declaration-attributes.swift b/unified/extractor/tests/corpus/swift/functions/declaration-attributes.swift new file mode 100644 index 000000000000..2443cb6d3fc5 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/functions/declaration-attributes.swift @@ -0,0 +1,4 @@ +class C { + @discardableResult public func f() -> Int { return 0 } + @available(*, unavailable) public init(x: Int) {} +} diff --git a/unified/extractor/tests/corpus/swift/variables/property-modifiers.output b/unified/extractor/tests/corpus/swift/variables/property-modifiers.output new file mode 100644 index 000000000000..0e5335fb7c14 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/variables/property-modifiers.output @@ -0,0 +1,174 @@ +class C { + public static var shared: C { get } + @objc public var name: String { get set } + private var count: Int { return 0 } +} + +--- + +sourceFile + endOfFileToken: endOfFile + statements: + codeBlockItem + item: + classDecl + attributes: + name: identifier "C" + memberBlock: + memberBlock + leftBrace: { + rightBrace: } + members: + memberBlockItem + decl: + variableDecl + attributes: + modifiers: + declModifier + name: public + declModifier + name: static + bindingSpecifier: var + bindings: + patternBinding + pattern: + identifierPattern + identifier: identifier "shared" + typeAnnotation: + typeAnnotation + colon: : + type: + identifierType + name: identifier "C" + accessorBlock: + accessorBlock + accessors: + accessorDecl + accessorSpecifier: get + attributes: + leftBrace: { + rightBrace: } + memberBlockItem + decl: + variableDecl + attributes: + attribute + atSign: @ + attributeName: + identifierType + name: identifier "objc" + modifiers: + declModifier + name: public + bindingSpecifier: var + bindings: + patternBinding + pattern: + identifierPattern + identifier: identifier "name" + typeAnnotation: + typeAnnotation + colon: : + type: + identifierType + name: identifier "String" + accessorBlock: + accessorBlock + accessors: + accessorDecl + accessorSpecifier: get + attributes: + accessorDecl + accessorSpecifier: set + attributes: + leftBrace: { + rightBrace: } + memberBlockItem + decl: + variableDecl + attributes: + modifiers: + declModifier + name: private + bindingSpecifier: var + bindings: + patternBinding + pattern: + identifierPattern + identifier: identifier "count" + typeAnnotation: + typeAnnotation + colon: : + type: + identifierType + name: identifier "Int" + accessorBlock: + accessorBlock + accessors: + codeBlockItem + item: + returnStmt + expression: + integerLiteralExpr + literal: integerLiteral "0" + returnKeyword: return + leftBrace: { + rightBrace: } + modifiers: + classKeyword: class + +--- + +top_level source="⟨body⟩" + body: + block source="⟨stmt⟩" + stmt: + class_like_declaration source="⟨modifier⟩ ⟨name_node⟩ {\n public static var shared: C { ⟨member⟩ }\n @objc public var name: String { ⟨member⟩ ⟨member⟩ }\n ⟨member⟩\n}" + modifier: modifier "class" source="class" + name_node: identifier "C" source="C" + member: + accessor_declaration source="⟨accessor_kind⟩" + modifier: + modifier "var" source="var" (external) + modifier "public" source="public" (external) + modifier "static" source="static" (external) + name_node: identifier "shared" source="shared" (external) + accessor_kind: accessor_kind "get" source="get" + return_type: identifier "C" source="C" (external) + accessor_declaration source="⟨accessor_kind⟩" + modifier: + modifier "var" source="var" (external) + modifier "@objc" source="@objc" (external) + modifier "public" source="public" (external) + name_node: identifier "name" source="name" (external) + accessor_kind: accessor_kind "get" source="get" + return_type: identifier "String" source="String" (external) + accessor_declaration source="⟨accessor_kind⟩⟨parameter⟩" + modifier: + modifier "var" source="var" (external) + modifier "@objc" source="@objc" (external) + modifier "public" source="public" (external) + modifier "chained_declaration" source="" + name_node: identifier "name" source="name" (external) + accessor_kind: accessor_kind "set" source="set" + parameter: + parameter source="⟨pattern⟩" + modifier: modifier "generated" source="" + type: identifier "String" source="String" (external) + pattern: identifier "newValue" source="set" + accessor_declaration source="⟨modifier⟩ ⟨modifier⟩ ⟨name_node⟩: ⟨return_type⟩ ⟨body⟩" + modifier: + modifier "var" source="var" + modifier "private" source="private" + name_node: identifier "count" source="count" + accessor_kind: accessor_kind "get" source="" + return_type: identifier "Int" source="Int" + body: + block source="{ ⟨stmt⟩ }" + stmt: + return_expr source="return ⟨value⟩" + value: int_literal "0" source="0" + constructor_declaration source="" + modifier: modifier "generated" source="" + name_node: identifier "init" source="" + body: block source="" diff --git a/unified/extractor/tests/corpus/swift/variables/property-modifiers.swift b/unified/extractor/tests/corpus/swift/variables/property-modifiers.swift new file mode 100644 index 000000000000..8402a4b25233 --- /dev/null +++ b/unified/extractor/tests/corpus/swift/variables/property-modifiers.swift @@ -0,0 +1,5 @@ +class C { + public static var shared: C { get } + @objc public var name: String { get set } + private var count: Int { return 0 } +} diff --git a/unified/ql/lib/change-notes/2026-10-29-dynamic-models-as-data.md b/unified/ql/lib/change-notes/2026-10-29-dynamic-models-as-data.md new file mode 100644 index 000000000000..a71fe64da8c0 --- /dev/null +++ b/unified/ql/lib/change-notes/2026-10-29-dynamic-models-as-data.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* Library models now use the dynamic models-as-data format (`sourceModel`, `sinkModel`, `summaryModel`, and `typeModel` rows identified by a `(type, path)` pair), which does not require type information. This replaces the models previously imported from the Swift analysis. Type models describing how to obtain instances of library types can be generated from `.swiftinterface` files using `unified/scripts/generate-type-models.sh`. diff --git a/unified/ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll b/unified/ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll index 103c8ff7d0a7..511118d1d479 100644 --- a/unified/ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll +++ b/unified/ql/lib/codeql/unified/internal/NameBindingPluginSwift.qll @@ -195,3 +195,39 @@ class SwiftPackageTarget extends ModuleScopeRepr, CallExpr { name = this.getName() } } + +/** + * Gets the name of the module described by the given `.swiftinterface` file. + * + * The module name is taken from the enclosing `.swiftmodule` folder if there is one, + * and otherwise from the file name itself, e.g. `Foundation.swiftinterface`. + */ +private string getSwiftInterfaceModuleName(File file) { + file.getExtension() = "swiftinterface" and + ( + result = file.getParentContainer().getBaseName().regexpCapture("(.*)\\.swiftmodule", 1) + or + not file.getParentContainer().getBaseName().matches("%.swiftmodule") and + result = file.getStem() + ) +} + +/** + * The top-level of a `.swiftinterface` file, seen as the representative of the module + * whose public interface it describes. + */ +class SwiftInterfaceModule extends ModuleScopeRepr, TopLevel { + private string name; + + SwiftInterfaceModule() { name = getSwiftInterfaceModuleName(this.getFile()) } + + /** Gets the name of this module. */ + string getModuleName() { result = name } + + override predicate shouldInclude(Container c, string path) { + c = this.getFile().getParentContainer() and + path = this.getFile().getBaseName() + } + + override predicate hasImportableName(string n) { n = name } +} diff --git a/unified/ql/lib/codeql/unified/internal/dataflow/FlowSummary.qll b/unified/ql/lib/codeql/unified/internal/dataflow/FlowSummary.qll index c4676aa46ea2..e186dd6cb7da 100644 --- a/unified/ql/lib/codeql/unified/internal/dataflow/FlowSummary.qll +++ b/unified/ql/lib/codeql/unified/internal/dataflow/FlowSummary.qll @@ -2,13 +2,33 @@ private import unified private import AllDataFlow private import codeql.dataflow.internal.FlowSummaryImpl private import codeql.util.Void -private import codeql.unified.internal.mad.LegacyMaD as LegacyMaD +private import codeql.unified.internal.mad.DynamicMaD as DynamicMaD private import codeql.dataflow.internal.AccessPathSyntax as AccessPathSyntax -module FlowSummaryInput implements InputSig { - class SummarizedCallableBase extends LegacyMaD::Selector { - SummarizedCallableBase() { LegacyMaD::normalizedSummaryModel(this, _, _, _, _) } +private newtype TSummaryKey = + MkSummaryKey(string type, string path) { DynamicMaD::flowSummaryModel(type, path, _, _, _, _) } + +/** + * A `(type, path)` pair identifying a library function that has a flow summary. + */ +class SummaryKey extends TSummaryKey { + /** Gets the type from which the access path of this summary starts. */ + string getType() { this = MkSummaryKey(result, _) } + + /** Gets the access path leading to the summarized function. */ + string getPath() { this = MkSummaryKey(_, result) } + + /** Holds if `call` is a call to the function identified by this summary key. */ + predicate matchesCall(CallExpr call) { + DynamicMaD::isCallToPath(this.getType(), this.getPath(), call) + } + + /** Gets a string representation of this summary key. */ + string toString() { result = this.getType() + ";" + this.getPath() } +} +module FlowSummaryInput implements InputSig { + class SummarizedCallableBase extends SummaryKey { Location getLocation() { none() } } @@ -133,15 +153,16 @@ class SummaryNode = FlowSummaryOutput::SummaryNode; class SummarizedCallable = FlowSummaryOutput::SummarizedCallable; private class SummarizedCallableFromModel extends SummarizedCallable { - SummarizedCallableFromModel() { LegacyMaD::normalizedSummaryModel(this, _, _, _, _) } + SummarizedCallableFromModel() { exists(this.getType()) } override predicate propagatesFlow( string input, string output, boolean preservesValue, Provenance p, boolean isExact, string model ) { isExact = true and + p = "manual" and model = "" and // TODO exists(string kind | - LegacyMaD::normalizedSummaryModel(this, input, output, kind, p) and + DynamicMaD::flowSummaryModel(this.getType(), this.getPath(), input, output, kind, _) and ( kind = "value" and preservesValue = true diff --git a/unified/ql/lib/codeql/unified/internal/mad/DynamicMaD.qll b/unified/ql/lib/codeql/unified/internal/mad/DynamicMaD.qll new file mode 100644 index 000000000000..bcb58edf3dc1 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/mad/DynamicMaD.qll @@ -0,0 +1,947 @@ +/** + * Provides an interpreter for dynamic-style models-as-data rows. + * + * Models are given as `(type, path)` pairs, where `type` names either a module (e.g. `Foundation`), + * an instance type (e.g. `Foundation.FileManager`), or a metatype (e.g. `Foundation.FileManager.Type`), + * and `path` is an access path leading from a value of that type to the value being modeled. + * + * Type information is not required to interpret the models. Instead, values belonging to a + * given type are found syntactically (references to module members, type annotations, and + * calls to initializers) and via `typeModel` rows that describe how instances of one type + * can be obtained from another. + * + * The following access path tokens are supported: + * - `Member[name]`: a property, method, or nested type named `name`. Methods are referred to by + * their base name, so overloads are not distinguished by this token. Initializers are referred + * to as `Member[init]` on the metatype, and match both `T(...)` and `T.init(...)`. + * - `WithNamedArgument[label]` and `WithoutNamedArgument[label]`: restricts the preceding function + * to calls that do or do not pass an argument with the given label. On the definition side, + * restricts to functions that do or do not declare a parameter with the given external name. + * These are used to distinguish overloads that differ by argument labels. + * - `Argument[n]`, `Argument[label:]`, `Argument[self]`: an argument passed to a call. + * - `Parameter[n]`, `Parameter[label:]`, `Parameter[self]`: a parameter of a function, either a + * callback passed to a library function, or a user-defined function overriding a library member. + * - `ReturnValue`: the result of a call, or the value returned from a user-defined override. + * + * Optional types, optional chaining, and force-unwrapping are transparent. + */ + +private import unified +private import codeql.dataflow.internal.AccessPathSyntax as AccessPathSyntax +private import codeql.unified.internal.Builtins +private import codeql.unified.internal.NameBindingPluginSwift as NameBindingPluginSwift +private import codeql.unified.internal.StaticNameBinding as StaticNameBinding +private import codeql.unified.internal.dataflow.AllDataFlow as DF +private import DynamicMaDExtensions + +/** Holds if `type, path` is the start of a model row. */ +private predicate isRelevantRow(string type, string path) { + sourceModel(type, path, _, _) + or + sinkModel(type, path, _, _) + or + summaryModel(type, path, _, _, _, _) + or + typeModel(_, type, path) +} + +/** Holds if `type, path` is the start of a type summary, i.e. a summary of kind `type`. */ +private predicate isTypeSummaryRow(string type, string path, string input, string output) { + summaryModel(type, path, input, output, "type", _) +} + +private predicate isRelevantAccessPath(string path) { + isRelevantRow(_, path) + or + summaryModel(_, _, path, _, _, _) + or + summaryModel(_, _, _, path, _, _) +} + +private module AccessPathInstance = AccessPathSyntax::AccessPath; + +/** An access path appearing in a model. */ +class AccessPath = AccessPathInstance::AccessPath; + +/** An access path token appearing in a model. */ +class AccessPathToken = AccessPathInstance::AccessPathToken; + +private predicate parseIntUnbounded = AccessPathInstance::parseIntUnbounded/1; + +/** + * Holds if `type` is a type string referring to a module. + * + * Module names do not contain dots, so any type without a dot is considered a module. + */ +bindingset[type] +predicate isModuleTypeString(string type) { not type.matches("%.%") } + +/** + * Holds if `type` is a type string referring to a metatype `parent.name.Type`. + * + * `parent` is the type string to which `name` should be applied as a member to obtain the metatype, + * that is, either a module, or another metatype. + */ +bindingset[type] +predicate parseMetatypeString(string type, string parent, string name) { + exists(string prefix | + type.regexpCapture("(.+)\\.([^.]+)\\.Type", 1) = prefix and + name = type.regexpCapture("(.+)\\.([^.]+)\\.Type", 2) and + if isModuleTypeString(prefix) then parent = prefix else parent = prefix + ".Type" + ) +} + +/** + * Holds if `type` is a type string referring to the instances of a type, i.e. a type string + * that is neither a module nor a metatype. + */ +bindingset[type] +predicate isInstanceTypeString(string type) { + not isModuleTypeString(type) and + not type.matches("%.Type") +} + +/** Holds if `type` is a type string that may be relevant for evaluating the models. */ +private predicate isRelevantType(string type) { + isRelevantRow(type, _) + or + typeModel(type, _, _) + or + exists(string instance | + isRelevantType(instance) and + isInstanceTypeString(instance) and + type = instance + ".Type" + ) + or + parseMetatypeString(any(string meta | isRelevantType(meta)), type, _) +} + +/** + * Holds if `prefix` is a dot-separated prefix of a relevant type string, not including + * a `.Type` suffix. + */ +private predicate isRelevantTypePrefix(string prefix) { + isRelevantType(prefix) and + not prefix.matches("%.Type") + or + prefix = any(string meta | isRelevantType(meta)).regexpCapture("(.+)\\.Type", 1) + or + prefix = any(string s | isRelevantTypePrefix(s)).regexpCapture("(.+)\\.[^.]+", 1) +} + +/** Holds if `name` appears as a member name in a model, either in an access path or a type string. */ +private predicate isRelevantMemberName(string name) { + name = any(AccessPathToken tok | tok.getName() = "Member").getAnArgument() + or + parseMetatypeString(any(string meta | isRelevantType(meta)), _, name) + or + name = any(string prefix | isRelevantTypePrefix(prefix)).regexpCapture(".*\\.([^.]+)", 1) +} + +/** Holds if `name` is a relevant module name. */ +private predicate isRelevantModule(string name) { + isModuleTypeString(name) and + isRelevantTypePrefix(name) +} + +/** Gets the leading identifier of a qualified name such as `A.B.C`. */ +private Identifier getLeadingIdentifier(Expr e) { + result = e + or + result = getLeadingIdentifier(e.(MemberAccessExpr).getBase()) +} + +/** + * Holds if the module `name` should be considered available in the database. + * + * To support re-exports and umbrella headers, we consider a module available in every file + * if it is imported anywhere in the database. The `Swift` module is always available. + * A module is also available if it is re-exported by an available module, as indicated by + * a type model of form `(name, otherModule, "")`. + */ +private predicate isModuleAvailable(string name) { + isRelevantModule(name) and + ( + name = "Swift" + or + name = getLeadingIdentifier(any(ImportDeclaration imprt).getImportedExpr()).getValue() + or + name = any(NameBindingPluginSwift::SwiftInterfaceModule m).getModuleName() + or + isModuleRef(_, name) + or + exists(string other | + typeModel(name, other, "") and + isModuleAvailable(other) + ) + ) +} + +/** + * Holds if `binding` is the name of a top-level declaration in a library module named `moduleName`. + * + * Builtin types belong to the `Swift` module, and declarations from a `.swiftinterface` file + * belong to the module that file describes. + */ +private predicate isLibraryTopLevelBinding(NameBinding binding, string moduleName) { + exists(TopLevel top | binding.getDeclaration() = top.getBody().getAStmt() | + top.getFile().getParentContainer() instanceof BuiltinsFolder and + moduleName = "Swift" + or + top.(NameBindingPluginSwift::SwiftInterfaceModule).getModuleName() = moduleName + ) +} + +/** Holds if `e` is a reference to the module `moduleName`, such as `Foundation` in `Foundation.URL`. */ +private predicate isModuleRef(Identifier e, string moduleName) { + e.getValue() = moduleName and + isRelevantModule(moduleName) and + not e instanceof IdentifierLabel and + not e instanceof NameBinding and + forall(NameBinding target | target = StaticNameBinding::getStaticBindingTargetFromIdentifier(e) | + target.getDeclaration() instanceof ImportDeclaration + ) +} + +/** + * Holds if `e` refers to the member `name` of the module `moduleName`. + * + * This holds for unresolved identifiers (assuming they come from an available module), identifiers + * that resolve to a top-level library declaration, and qualified references such as `Foundation.URL`. + */ +pragma[nomagic] +private predicate isModuleMemberRef(Expr e, string moduleName, string name) { + isRelevantMemberName(name) and + ( + exists(Identifier id | + id = e and + id.getValue() = name and + not id instanceof IdentifierLabel and + not id instanceof NameBinding + | + not exists(StaticNameBinding::getStaticBindingTargetFromIdentifier(id)) and + isModuleAvailable(moduleName) + or + isLibraryTopLevelBinding(StaticNameBinding::getStaticBindingTargetFromIdentifier(id), + moduleName) + ) + or + exists(MemberAccessExpr access | + access = e and + access.getMemberName() = name and + isModuleRef(access.getBase(), moduleName) + ) + ) +} + +/** + * Gets the type string denoted by the type expression `te`, such as `Foundation.URL`. + * + * Optional types and type modifiers are unwrapped. + */ +string getTypeStringFromTypeExpr(Expr te) { + exists(string moduleName, string name | + isModuleMemberRef(te, moduleName, name) and + result = moduleName + "." + name and + isRelevantTypePrefix(result) + ) + or + exists(MemberAccessExpr access | + access = te and + result = getTypeStringFromTypeExpr(access.getBase()) + "." + access.getMemberName() and + isRelevantTypePrefix(result) + ) + or + exists(GenericTypeExpr gte | gte = te | + if gte.getBase().(Identifier).getValue() = "Optional" + then result = getTypeStringFromTypeExpr(gte.getTypeArgument(0)) + else result = getTypeStringFromTypeExpr(gte.getBase()) + ) + or + result = getTypeStringFromTypeExpr(te.(ModifiedTypeExpr).getType()) +} + +/** Holds if `cls` is a user-defined class whose base types include the given type. */ +private predicate isUserSubtypeOf(ClassLikeDeclaration cls, string type) { + isInstanceTypeString(type) and + isRelevantType(type) and + exists(ClassLikeDeclaration decl | + decl.resolve() = cls and + not cls.getFile().getExtension() = "swiftinterface" + | + getTypeStringFromTypeExpr(decl.getABaseType().getType()) = type + or + isUserSubtypeOf(decl.getABaseClass(), type) + ) +} + +/** Gets a method of `cls` (or its extensions) with the given name. */ +private Callable getAMethod(ClassLikeDeclaration cls, string name) { + result = cls.getAMemberIncludingExtensions() and + ( + result.(FunctionDeclaration).getName() = name + or + result instanceof ConstructorDeclaration and name = "init" + ) +} + +/** + * Holds if `id` is an unresolved identifier inside a method of `cls`, and may thus refer to + * a member inherited from a library type. + */ +private predicate isImplicitSelfMemberAccess(ClassLikeDeclaration cls, Identifier id, string name) { + isUserSubtypeOf(cls, _) and + isRelevantMemberName(name) and + id.getValue() = name and + not id instanceof IdentifierLabel and + not id instanceof NameBinding and + not exists(StaticNameBinding::getStaticBindingTargetFromIdentifier(id)) and + id.getEnclosingCallable() = getAMethod(cls, _) +} + +/** Holds if there is a local value-preserving step from `node1` to `node2`. */ +private predicate localValueStep(DataFlow::Node node1, DataFlow::Node node2) { + exists(DF::Step s | + DF::step(node1, s, node2) and + ( + s.value() + or + s.valueMustFlow() + or + exists(DF::ContentSet c | DF::bypassContentSet(c) | s.read(c) or s.store(c)) + ) + ) + or + DF::localSsaStep(node1, node2, _) +} + +/** Holds if `callable` is a function that may flow into a callback position. */ +private predicate isCallbackCandidate(Callable callable) { + callable instanceof FunctionExpr + or + callable instanceof LocalFunctionDeclaration +} + +/** Holds if the function `callable` locally flows to `node`. */ +private predicate callableFlowsTo(Callable callable, DataFlow::Node node) { + isCallbackCandidate(callable) and + node.isCallable(callable) + or + exists(DataFlow::Node mid | + callableFlowsTo(callable, mid) and + localValueStep(mid, node) + ) +} + +private newtype TApiNode = + /** The module named `name`. */ + MkModule(string name) { isModuleAvailable(name) } or + /** A value flowing out of a library. */ + MkUse(DataFlow::Node node) or + /** A value flowing into a library. */ + MkDef(DataFlow::Node node) or + /** A static reference to a type, which does not have a corresponding data-flow node. */ + MkStaticRef(Expr e) { isStaticRefCandidate(e) and not hasValueNode(e) } or + /** The `init` member being implicitly invoked by a call `callee(...)`. */ + MkImplicitInit(Expr callee) { callee = any(CallExpr call).getCallee() } or + /** A user-defined class extending or conforming to a library type. */ + MkClassDef(ClassLikeDeclaration cls) { isUserSubtypeOf(cls, _) } or + /** A user-defined method in a class extending or conforming to a library type. */ + MkFunctionDef(Callable callable) { + exists(ClassLikeDeclaration cls | isUserSubtypeOf(cls, _) and callable = getAMethod(cls, _)) + } + +/** + * A node used for evaluating access paths. + * + * This is either a data-flow node (flowing in or out of a library), or a node representing a + * module, user-defined subclass, or user-defined method. + */ +class ApiNode extends TApiNode { + /** Gets the data-flow node for a value flowing out of a library, if this is such a node. */ + DataFlow::Node asUse() { this = MkUse(result) } + + /** Gets the data-flow node for a value flowing into a library, if this is such a node. */ + DataFlow::Node asDef() { this = MkDef(result) } + + /** Gets a string representation of this node. */ + string toString() { + exists(string name | this = MkModule(name) and result = "module " + name) + or + result = "use " + this.asUse().toString() + or + result = "def " + this.asDef().toString() + or + exists(Expr callee | this = MkImplicitInit(callee) and result = "init " + callee.toString()) + or + exists(Expr e | this = MkStaticRef(e) and result = "static " + e.toString()) + or + exists(ClassLikeDeclaration cls | this = MkClassDef(cls) and result = "class " + cls.toString()) + or + exists(Callable c | this = MkFunctionDef(c) and result = "function " + c.toString()) + } + + /** Gets the location of this node. */ + Location getLocation() { + result = this.asUse().getLocation() + or + result = this.asDef().getLocation() + or + exists(Expr callee | this = MkImplicitInit(callee) and result = callee.getLocation()) + or + exists(Expr e | this = MkStaticRef(e) and result = e.getLocation()) + or + exists(ClassLikeDeclaration cls | this = MkClassDef(cls) and result = cls.getLocation()) + or + exists(Callable c | this = MkFunctionDef(c) and result = c.getLocation()) + } +} + +/** Holds if `e` has a data-flow node representing its value. */ +private predicate hasValueNode(Expr e) { any(DataFlow::Node n).isResultValue(e) } + +/** Holds if `e` may be a static reference to a type. */ +private predicate isStaticRefCandidate(Expr e) { + isModuleMemberRef(e, _, _) + or + exists(MemberAccessExpr access | + access = e and + isStaticRefCandidate(access.getBase()) and + isRelevantMemberName(access.getMemberName()) + ) +} + +/** + * Gets the API node representing the use of `e`. + * + * For expressions without a value, such as type references, a static reference node is used instead. + */ +private ApiNode useOfExpr(Expr e) { + result.asUse().isResultValue(e) + or + result = MkStaticRef(e) +} + +/** Holds if `node` represents the function being invoked at `call`. */ +pragma[nomagic] +private predicate isFunctionNodeForCall(ApiNode node, CallExpr call) { + node.asUse().isResultValue(call.getCallee()) + or + node = MkImplicitInit(call.getCallee()) +} + +/** Holds if `call` has an argument with the given `label`. */ +private predicate callHasLabel(CallExpr call, string label) { + call.getAnArgument().getName() = label +} + +/** Holds if `callable` has a parameter with the given external name. */ +private predicate callableHasLabel(Callable callable, string label) { + callable.getAParameter().getExternalName() = label +} + +/** Gets the member `name` of `node`. */ +pragma[nomagic] +private ApiNode getMember(ApiNode node, string name) { + isRelevantMemberName(name) and + ( + exists(string moduleName, Expr e | + node = MkModule(moduleName) and + isModuleMemberRef(e, moduleName, name) and + result = useOfExpr(e) + ) + or + exists(Expr base | node = MkStaticRef(base) | + exists(MemberAccessExpr access | + access.getBase() = base and + access.getMemberName() = name and + result = useOfExpr(access) + ) + or + name = "init" and + result = MkImplicitInit(base) + ) + or + exists(DataFlow::Node base | base = node.asUse() | + DF::step(base, any(DF::Step s | s.readName(name)), result.asUse()) + or + exists(MemberAccessExpr access | + base.isResultValue(access.getBase()) and + access.getMemberName() = name and + result.asDef().isIncomingValue(access) + ) + or + name = "init" and + exists(Expr callee | + base.isResultValue(callee) and + result = MkImplicitInit(callee) + ) + ) + or + exists(ClassLikeDeclaration cls | node = MkClassDef(cls) | + result = MkFunctionDef(getAMethod(cls, name)) + or + exists(Identifier id | isImplicitSelfMemberAccess(cls, id, name) | + result.asUse().isResultValue(id) + or + result.asDef().isIncomingValue(id) + ) + ) + ) +} + +bindingset[token] +pragma[inline_late] +private predicate argumentMatchesToken(Argument arg, AccessPathToken token) { + arg.getPositionalIndex() = parseIntUnbounded(token.getAnArgument()) + or + arg.getName() + ":" = token.getAnArgument() +} + +bindingset[token] +pragma[inline_late] +private predicate parameterMatchesToken(Parameter param, AccessPathToken token) { + param.getPositionalIndex() = parseIntUnbounded(token.getAnArgument()) + or + param.getExternalName() + ":" = token.getAnArgument() +} + +/** Gets the node reached by applying `token` to `node`. */ +bindingset[node, token] +private ApiNode getSuccessorFromToken(ApiNode node, AccessPathToken token) { + token.getName() = "Member" and + result = getMember(node, token.getAnArgument()) + or + token.getName() = "WithNamedArgument" and + result = node and + ( + exists(CallExpr call | isFunctionNodeForCall(node, call) | + callHasLabel(call, token.getAnArgument()) + ) + or + exists(Callable c | node = MkFunctionDef(c) | callableHasLabel(c, token.getAnArgument())) + ) + or + token.getName() = "WithoutNamedArgument" and + result = node and + ( + exists(CallExpr call | isFunctionNodeForCall(node, call) | + not callHasLabel(call, token.getAnArgument()) + ) + or + exists(Callable c | node = MkFunctionDef(c) | not callableHasLabel(c, token.getAnArgument())) + ) + or + token.getName() = "Argument" and + exists(CallExpr call | isFunctionNodeForCall(node, call) | + exists(Argument arg | + arg = call.getAnArgument() and + argumentMatchesToken(arg, token) and + result.asDef().isResultValue(arg.getValue()) + ) + or + token.getAnArgument() = "self" and + result.asDef().isReceiverArgument(call) + ) + or + token.getName() = "Parameter" and + exists(Callable callable | + node = MkFunctionDef(callable) + or + callableFlowsTo(callable, node.asDef()) + | + exists(Parameter param | + param.getDeclaringCallable() = callable and + parameterMatchesToken(param, token) and + result.asUse().asExpr() = param.getPattern() + ) + or + token.getAnArgument() = "self" and + result.asUse().isReceiverParameter(callable) + ) + or + token = "ReturnValue" and + ( + exists(CallExpr call | + isFunctionNodeForCall(node, call) and + result.asUse().isResultValue(call) + ) + or + exists(Callable callable | + node = MkFunctionDef(callable) and + result.asDef().isReturnNode(callable) + ) + ) +} + +/** Gets the result of applying `ReturnValue` to `node`. */ +private ApiNode getReturnValue(ApiNode node) { + exists(CallExpr call | + isFunctionNodeForCall(node, call) and + result.asUse().isResultValue(call) + ) +} + +/** + * Holds if `type` is a user-defined type alias for the given type, or a class extending it. + */ +private predicate isUserTypeForType(Identifier decl, string type) { + exists(ClassLikeDeclaration cls | + isUserSubtypeOf(cls, type) and + decl = cls.getNameNode() + ) +} + +/** Gets a node that is an instance of the type `type` due to a type annotation or similar. */ +pragma[nomagic] +private ApiNode getAnAnnotatedInstance(string type) { + isInstanceTypeString(type) and + isRelevantType(type) and + ( + exists(Parameter param | + getTypeStringFromTypeExpr(param.getType()) = type and + result.asUse().asExpr() = param.getPattern() + ) + or + exists(TypeCastExpr cast | + getTypeStringFromTypeExpr(cast.getType()) = type and + result = useOfExpr(cast) + ) + or + // Accesses to a user-defined property or function with a declared type + exists(Expr access, NameBinding target | + target = StaticNameBinding::getStaticBindingTargetFromRef(access) + | + exists(VariableDeclaration decl | + target = decl.getNameNode() and + getTypeStringFromTypeExpr(decl.getType()) = type and + result = useOfExpr(access) + ) + or + exists(FunctionDeclaration decl, CallExpr call | + target = decl.getNameNode() and + getTypeStringFromTypeExpr(decl.getReturnType()) = type and + access = call.getCallee() and + result = useOfExpr(call) + ) + ) + or + // Instantiation of a user-defined subclass + exists(CallExpr call, Expr callee, Expr classRef | + callee = call.getCallee() and + ( + classRef = callee + or + classRef = callee.(MemberAccessExpr).getBase() and + callee.(MemberAccessExpr).getMemberName() = "init" + ) and + isUserTypeForType(StaticNameBinding::getStaticBindingTargetFromRef(classRef), type) and + result = useOfExpr(call) + ) + or + // Receivers of user-defined methods in a subclass + exists(ClassLikeDeclaration cls | + isUserSubtypeOf(cls, type) and + result.asUse().isReceiverParameter(getAMethod(cls, _)) + ) + or + exists(ClassLikeDeclaration cls | + isUserSubtypeOf(cls, type) and + result = MkClassDef(cls) + ) + ) +} + +/** Gets a node that is an instance of the given type, without following local flow. */ +private ApiNode getATypeNodeRaw(string type) { + isRelevantType(type) and + ( + result = MkModule(type) + or + exists(string type2, AccessPath path | + typeModel(type, type2, path) and + result = getNodeFromPath(type2, path) + ) + or + exists(string parent, string name | + parseMetatypeString(type, parent, name) and + result = getMember(getATypeNode(parent), name) + ) + or + isInstanceTypeString(type) and + result = getReturnValue(getMember(getATypeNode(type + ".Type"), "init")) + or + result = getAnAnnotatedInstance(type) + ) +} + +/** Gets a node that is an instance of the given type. */ +cached +ApiNode getATypeNode(string type) { + result = getATypeNodeRaw(type) + or + localValueStepPlus(getATypeNodeRaw(type).asUse(), result.asUse()) + or + // Apply type summaries + typeStep(getATypeNode(type), result) +} + +/** Holds if `node` is the use of a value appearing in the evaluation of an access path. */ +private predicate isRelevantUse(DataFlow::Node node) { + node = getATypeNodeRaw(_).asUse() + or + node = getNodeFromPathRaw(_, _, _).asUse() + or + node = getNodeFromSubPathRaw(_, _, _).asUse() +} + +/** Holds if `node2` can be reached from the relevant node `node1` via one or more local flow steps. */ +private predicate localValueStepPlus(DataFlow::Node node1, DataFlow::Node node2) { + isRelevantUse(node1) and + localValueStep(node1, node2) + or + exists(DataFlow::Node mid | + localValueStepPlus(node1, mid) and + localValueStep(mid, node2) + ) +} + +/** + * Gets the node reached by applying the first token of `path` to an instance of `type`. + * + * This is computed per `(type, token)` pair rather than per row, as many rows typically share + * the same type and first token, and the set of instances of a type can be large. + */ +pragma[nomagic] +private ApiNode getNodeFromFirstToken(string type, AccessPathToken token) { + exists(AccessPath path | + isRelevantRow(type, path) and + token = path.getToken(0) + ) and + result = getSuccessorFromToken(getATypeNode(type), token) +} + +/** + * Gets the node reached by evaluating the first `n` tokens of `(type, path)`, but without following + * local flow after the last token. + */ +private ApiNode getNodeFromPathRaw(string type, AccessPath path, int n) { + isRelevantRow(type, path) and + ( + n = 0 and + path.getNumToken() = 0 and + result = getATypeNode(type) + or + n = 1 and + result = getNodeFromFirstToken(type, path.getToken(0)) + or + n > 1 and + result = getSuccessorFromToken(getNodeFromPath(type, path, n - 1), path.getToken(n - 1)) + ) +} + +/** Gets the node reached by evaluating the first `n` tokens of `(type, path)`. */ +private ApiNode getNodeFromPath(string type, AccessPath path, int n) { + result = getNodeFromPathRaw(type, path, n) + or + n > 0 and + localValueStepPlus(getNodeFromPathRaw(type, path, n).asUse(), result.asUse()) + or + // Apply type summaries + n > 0 and + typeStep(getNodeFromPath(type, path, n), result) +} + +/** + * Gets the node reached by evaluating `(type, path)`. + * + * This does not include nodes reached by local flow after the last token. This is to avoid + * reporting every alias of a source as a source. + */ +cached +ApiNode getNodeFromPath(string type, AccessPath path) { + result = getNodeFromPathRaw(type, path, path.getNumToken()) +} + +/** Like `getNodeFromPath` but also includes nodes reached via local flow. */ +private ApiNode getNodeFromPathEx(string type, AccessPath path) { + result = getNodeFromPath(type, path, path.getNumToken()) +} + +/** Holds if `base` should be used as the base for evaluating a type summary input or output. */ +private predicate isTypeSummaryBase(ApiNode base, AccessPath subPath) { + exists(string type, string path | + isTypeSummaryRow(type, path, subPath, _) or isTypeSummaryRow(type, path, _, subPath) + | + base = getNodeFromPathEx(type, path) + ) +} + +/** Gets the node reached by evaluating the first `n` tokens of `subPath`, starting at `base`. */ +private ApiNode getNodeFromSubPathRaw(ApiNode base, AccessPath subPath, int n) { + isTypeSummaryBase(base, subPath) and + ( + n = 0 and result = base + or + result = + getSuccessorFromToken(getNodeFromSubPathEx(base, subPath, n - 1), subPath.getToken(n - 1)) + ) +} + +/** Like `getNodeFromSubPathRaw` but also includes nodes reachable via local flow. */ +private ApiNode getNodeFromSubPathEx(ApiNode base, AccessPath subPath, int n) { + result = getNodeFromSubPathRaw(base, subPath, n) + or + localValueStepPlus(getNodeFromSubPathRaw(base, subPath, n).asUse(), result.asUse()) +} + +/** Gets the node reached by evaluating `subPath` starting at `base`. */ +private ApiNode getNodeFromSubPath(ApiNode base, AccessPath subPath) { + result = getNodeFromSubPathRaw(base, subPath, subPath.getNumToken()) +} + +/** + * Holds if a type summary implies that `succ` has the same type as `pred`. + */ +private predicate typeStep(ApiNode pred, ApiNode succ) { + exists(string type, string path, ApiNode base, AccessPath input, AccessPath output | + isTypeSummaryRow(type, path, input, output) and + base = getNodeFromPathEx(type, path) and + pred = getNodeFromSubPath(base, input) and + succ = getNodeFromSubPath(base, output) + ) +} + +/** + * Holds if `node` is inside a library file, that is, a file with builtins or a `.swiftinterface` file. + * + * Sources and sinks are not reported inside library files. + */ +private predicate isInLibraryFile(DataFlow::Node node) { + exists(File file | file = node.getLocation().getFile() | + file.getParentContainer() instanceof BuiltinsFolder + or + file.getExtension() = "swiftinterface" + ) +} + +/** Gets a data-flow node to use as a source, given a node reached by a source model. */ +private DataFlow::Node getSourceNode(ApiNode node) { + result = node.asUse() + or + result = node.asDef().getPostUpdateNode() +} + +/** Gets a data-flow node to use as a sink, given a node reached by a sink model. */ +private DataFlow::Node getSinkNode(ApiNode node) { result = node.asDef() } + +/** Holds if `node` is a source of the given `kind`, due to `madId`. */ +cached +predicate sourceNode(DataFlow::Node node, string kind, QlBuiltins::ExtensionId madId) { + exists(string type, string path | + sourceModel(type, path, kind, madId) and + node = getSourceNode(getNodeFromPath(type, path)) and + not isInLibraryFile(node) + ) +} + +/** Holds if `node` is a sink of the given `kind`, due to `madId`. */ +cached +predicate sinkNode(DataFlow::Node node, string kind, QlBuiltins::ExtensionId madId) { + exists(string type, string path | + sinkModel(type, path, kind, madId) and + node = getSinkNode(getNodeFromPath(type, path)) and + not isInLibraryFile(node) + ) +} + +/** + * Holds if `call` is a call to `(type, path)`. + */ +pragma[nomagic] +predicate isCallToPath(string type, string path, CallExpr call) { + isFunctionNodeForCall(getNodeFromPathEx(type, path), call) +} + +/** Holds if a summary model with `(type, path)` propagates flow from `input` to `output`. */ +predicate flowSummaryModel( + string type, string path, string input, string output, string kind, QlBuiltins::ExtensionId madId +) { + summaryModel(type, path, input, output, kind, madId) and + kind = ["value", "taint"] +} + +module Public { + /** Provides access to data from library models. */ + module Models { + /** Holds if `node` is a source of the given `kind`. */ + predicate isSource(DataFlow::Node node, string kind) { sourceNode(node, kind, _) } + + /** Holds if `node` is a sink of the given `kind`. */ + predicate isSink(DataFlow::Node node, string kind) { sinkNode(node, kind, _) } + } +} + +/** Provides debugging predicates for finding problems in the models. */ +module Debug { + private predicate isValidTokenName(string name) { + name = + [ + "Member", "WithNamedArgument", "WithoutNamedArgument", "Argument", "Parameter", + "ReturnValue" + ] + } + + private predicate isValidSummaryTokenName(string name) { + isValidTokenName(name) + or + name = + [ + "ArrayElement", "OptionalSome", "CollectionElement", "TupleElement", "WithArrayElement", + "WithoutArrayElement", "WithOptionalSome", "WithoutOptionalSome", "WithCollectionElement", + "WithoutCollectionElement" + ] + } + + /** Holds if `path`, used as the `type, path` pair in a model, contains an invalid token. */ + query predicate invalidAccessPath(string type, AccessPath path, string message) { + isRelevantRow(type, path) and + ( + path.hasSyntaxError() and + message = "Syntax error" + or + exists(AccessPathToken token | + token = path.getToken(_) and + not isValidTokenName(token.getName()) and + message = "Invalid token '" + token + "'" + ) + or + exists(AccessPathToken token | + token = path.getToken(_) and + token.getName() = ["Argument", "Parameter"] and + exists(string arg | arg = token.getAnArgument() | + not arg.regexpMatch("-?\\d+(\\.\\.(-?\\d+)?)?") and + not arg.matches("%:") and + not arg = "self" + ) and + message = "Invalid argument in '" + token + "'" + ) + ) + or + exists(string input, string output | + summaryModel(type, _, input, output, _, _) and + path = [input, output] and + exists(AccessPathToken token | + token = path.getToken(_) and + not isValidSummaryTokenName(token.getName()) and + message = "Invalid summary token '" + token + "'" + ) + ) + } + + /** Holds if `type` is used in a model but has no instances in the database. */ + query predicate typeWithoutInstances(string type) { + isRelevantRow(type, _) and + not exists(getATypeNode(type)) + } +} diff --git a/unified/ql/lib/codeql/unified/internal/mad/DynamicMaDExtensions.qll b/unified/ql/lib/codeql/unified/internal/mad/DynamicMaDExtensions.qll new file mode 100644 index 000000000000..e16f7b2ea64d --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/mad/DynamicMaDExtensions.qll @@ -0,0 +1,32 @@ +/** + * Defines extensible predicates for contributing dynamic-style library models from data extensions. + */ +overlay[local] +module; + +/** + * Holds if the value at `(type, path)` should be seen as a flow source of the given `kind`. + */ +extensible predicate sourceModel( + string type, string path, string kind, QlBuiltins::ExtensionId madId +); + +/** + * Holds if the value at `(type, path)` should be seen as a flow sink of the given `kind`. + */ +extensible predicate sinkModel(string type, string path, string kind, QlBuiltins::ExtensionId madId); + +/** + * Holds if calls to `(type, path)` propagate flow from `input` to `output`. + * + * `kind` is either `value`, `taint`, or `type`. A summary of kind `type` indicates that the value at + * `output` (relative to `(type, path)`) has the same type as the value at `input`. + */ +extensible predicate summaryModel( + string type, string path, string input, string output, string kind, QlBuiltins::ExtensionId madId +); + +/** + * Holds if the value at `(type2, path)` should be seen as an instance of `type1`. + */ +extensible predicate typeModel(string type1, string type2, string path); diff --git a/unified/ql/lib/codeql/unified/internal/mad/LegacyMaD.qll b/unified/ql/lib/codeql/unified/internal/mad/LegacyMaD.qll deleted file mode 100644 index a09dc88aef59..000000000000 --- a/unified/ql/lib/codeql/unified/internal/mad/LegacyMaD.qll +++ /dev/null @@ -1,379 +0,0 @@ -/** - * Provides an approximate interpreter for MaD models imported from legacy Swift. - */ - -private import unified -private import codeql.dataflow.internal.AccessPathSyntax - -extensible predicate legacySourceModel( - string namespace, string type, boolean subtypes, string name, string signature, string ext, - string output, string kind, string provenance -); - -extensible predicate legacySinkModel( - string namespace, string type, boolean subtypes, string name, string signature, string ext, - string input, string kind, string provenance -); - -extensible predicate legacySummaryModel( - string namespace, string type, boolean subtypes, string name, string signature, string ext, - string input, string output, string kind, string provenance -); - -private predicate modelContainsMethodName(string name) { - legacySourceModel(_, _, _, name, _, _, _, _, _) - or - legacySinkModel(_, _, _, name, _, _, _, _, _) - or - legacySummaryModel(_, _, _, name, _, _, _, _, _, _) -} - -private predicate parsedRawMethodName(string rawName, string name, string argLabels) { - // NOTE: We only support method names at the moment, not property names like `String.count`. - modelContainsMethodName(rawName) and - exists(string regex | - regex = "([^(]+)\\((.*)\\)" and - name = rawName.regexpCapture(regex, 1) and - argLabels = rawName.regexpCapture(regex, 2) - ) -} - -private string getSimpleNameFromExpr(Expr e) { - result = e.(Identifier).getValue() - or - result = e.(MemberAccessExpr).getMemberName() -} - -private string getQualifiedNameFromExpr(Expr e) { - result = e.(Identifier).getValue() - or - exists(MemberAccessExpr access | e = access | - result = getQualifiedNameFromExpr(access.getBase()) + "." + access.getMemberName() - ) -} - -private string getArgLabelsFromCall(CallExpr call) { - result = - concat(Argument arg, string name, int group | - arg = call.getAnArgument() and - ( - arg.isPositional() and - name = "_" and - group = 0 - or - name = arg.getName() and - group = 1 - ) - | - name + ":" order by group, name - ) -} - -pragma[nomagic] -private predicate methodCallSelector(CallExpr call, string name, string argLabels) { - name = getSimpleNameFromExpr(call.getCallee()) and - argLabels = getArgLabelsFromCall(call) -} - -pragma[nomagic] -private predicate constructorCallSelector(CallExpr call, string name, string argLabels) { - ( - if call.getCallee().(MemberAccessExpr).getMemberName() = "init" - then name = getQualifiedNameFromExpr(call.getCallee().(MemberAccessExpr).getBase()) - else name = getQualifiedNameFromExpr(call.getCallee()) - ) and - argLabels = getArgLabelsFromCall(call) -} - -private predicate isSubclassOfType(ClassLikeDeclaration cls, string typeName) { - typeName = any(Selector s).getTypeString() and - ( - getQualifiedNameFromExpr(cls.getABaseType().getType()) = typeName - or - isSubclassOfType(cls.getABaseClass(), typeName) - ) -} - -private string getArgLabelsFromCallable(Callable callable) { - result = - concat(Parameter param, string name, int group | - param.getParent() = callable and - ( - param.isPositional() and - name = "_" and - group = 0 - or - name = param.getExternalName() and - group = 1 - ) - | - name + ":" order by group, name - ) -} - -pragma[nomagic] -private predicate callableSelector( - FunctionDeclaration callable, string type, string name, string argLabels -) { - name = callable.getName() and - argLabels = getArgLabelsFromCallable(callable) and - exists(ClassLikeDeclaration cls | - callable = cls.getAMemberIncludingExtensions() and - isSubclassOfType(cls, type) - ) -} - -private newtype TSelector = - MkSelector(string type, boolean subtypes, string name, string argLabels, string argTypes) { - exists(string rawName | - legacySourceModel(_, type, subtypes, rawName, argTypes, _, _, _, _) - or - legacySinkModel(_, type, subtypes, rawName, argTypes, _, _, _, _) - or - legacySummaryModel(_, type, subtypes, rawName, argTypes, _, _, _, _, _) - | - parsedRawMethodName(rawName, name, argLabels) - ) - } - -/** - * A tuple from a model that identifies call sites. - */ -class Selector extends TSelector { - string getTypeString() { this = MkSelector(result, _, _, _, _) } - - boolean getSubtypesFlag() { this = MkSelector(_, result, _, _, _) } - - string getName() { this = MkSelector(_, _, result, _, _) } - - string getArgLabels() { this = MkSelector(_, _, _, result, _) } - - string getArgTypes() { this = MkSelector(_, _, _, _, result) } - - private string ppSubtypes() { - if this.getSubtypesFlag() = true then result = "+" else result = "" - } - - string toString() { - result = - this.getTypeString() + this.ppSubtypes() + "." + this.getName() + "(" + this.getArgLabels() + - ")" + this.getArgTypes() - } - - /** Holds if `name,argLabels` should be used to join with `methodCallSelector`. */ - pragma[nomagic] - private predicate matchesMethodCallSelector(string name, string argLabels) { - this = MkSelector(_, _, name, argLabels, _) and - name != "init" - } - - /** Holds if `name,argLabels` should be used to join with `constructorCallSelector`. */ - pragma[nomagic] - private predicate matchesConstructorCallSelector(string name, string argLabels) { - this = MkSelector(name, _, "init", argLabels, _) - } - - predicate matchesCall(CallExpr call) { - exists(string name, string argLabels | - this.matchesMethodCallSelector(name, argLabels) and - methodCallSelector(call, name, argLabels) - or - this.matchesConstructorCallSelector(name, argLabels) and - constructorCallSelector(call, name, argLabels) - ) - } - - predicate matchesCallable(Callable callable) { - exists(string type, string name, string argLabels | - callableSelector(callable, type, name, argLabels) and - this = MkSelector(type, true, name, argLabels, _) - ) - } - - int getPositionalArity() { result = count(int n | this.getArgLabels().splitAt(":", n) = "_") } - - string getANamedArgument() { result = this.getArgLabels().splitAt(":") and result != "_" } -} - -private predicate isAccessPath(string path) { - legacySourceModel(_, _, _, _, _, _, path, _, _) // output - or - legacySinkModel(_, _, _, _, _, _, path, _, _) // input - or - legacySummaryModel(_, _, _, _, _, _, path, _, _, _) // input - or - legacySummaryModel(_, _, _, _, _, _, _, path, _, _) // output -} - -private module AccessPathOutput = AccessPath; - -private import AccessPathOutput - -/** - * Gets the input to `call` specified by `token`. Only singleton access paths are supported. - */ -bindingset[call, token] -private DataFlow::Node getSinkFromCall(CallExpr call, AccessPathToken token) { - token.getName() = "Argument" and - exists(Argument arg | - arg = call.getAnArgument() and - result.asExpr() = arg.getValue() - | - arg.getPositionalIndex() = parseIntUnbounded(token.getAnArgument()) - or - arg.getName() + ":" = token.getAnArgument() - ) - or - token = "Argument[self]" and - result.isReceiverArgument(call) -} - -/** - * Gets the output from `call` specified by `token`. Only singleton access paths are supported. - */ -bindingset[call, token] -private DataFlow::Node getSourceFromCall(CallExpr call, AccessPathToken token) { - token = "ReturnValue" and - result.asExpr() = call - or - result = getSinkFromCall(call, token).getPostUpdateNode() -} - -/** - * Gets the sink from `callable` specified by `token`. Only singleton access paths are supported. - */ -bindingset[callable, token] -private DataFlow::Node getSinkFromCallable(Callable callable, AccessPathToken token) { - token = "ReturnValue" and - result.isReturnNode(callable) -} - -/** - * Gets the source from `callable` specified by `token`. Only singleton access paths are supported. - */ -bindingset[callable, token] -private DataFlow::Node getSourceFromCallable(Callable callable, AccessPathToken token) { - token.getName() = "Parameter" and - exists(Parameter param | - param.getParent() = callable and - result.asExpr() = param.getPattern() - | - param.getPositionalIndex() = parseIntUnbounded(token.getAnArgument()) - or - param.getExternalName() + ":" = token.getAnArgument() - ) - or - token = "Parameter[self]" and - result.isReceiverParameter(callable) -} - -private predicate normalizedSourceModel( - Selector selector, AccessPath output, string kind, string provenance -) { - exists( - string type, boolean subtypes, string rawName, string name, string argLabels, string argTypes - | - legacySourceModel(_, type, subtypes, rawName, argTypes, _, output, kind, provenance) and - parsedRawMethodName(rawName, name, argLabels) and - selector = MkSelector(type, subtypes, name, argLabels, argTypes) - ) -} - -private predicate normalizedSinkModel( - Selector selector, AccessPath output, string kind, string provenance -) { - exists( - string type, boolean subtypes, string rawName, string name, string argLabels, string argTypes - | - legacySinkModel(_, type, subtypes, rawName, argTypes, _, output, kind, provenance) and - parsedRawMethodName(rawName, name, argLabels) and - selector = MkSelector(type, subtypes, name, argLabels, argTypes) - ) -} - -predicate normalizedSummaryModel( - Selector selector, string input, string output, string kind, string provenance -) { - exists( - string type, boolean subtypes, string rawName, string name, string argLabels, string argTypes - | - legacySummaryModel(_, type, subtypes, rawName, argTypes, _, input, output, kind, provenance) and - parsedRawMethodName(rawName, name, argLabels) and - selector = MkSelector(type, subtypes, name, argLabels, argTypes) - ) -} - -/** - * Gets a flow source with the given `kind` and `provenance`. - */ -DataFlow::Node getASource(string kind, string provenance) { - exists(Selector selector, AccessPath output | - normalizedSourceModel(selector, output, kind, provenance) - | - exists(CallExpr call | - selector.matchesCall(call) and - result = getSourceFromCall(call, output) - ) - or - exists(Callable callable | - selector.matchesCallable(callable) and - result = getSourceFromCallable(callable, output) - ) - ) -} - -/** - * Gets a sink with the given `kind` and `provenance`. - */ -DataFlow::Node getASink(string kind, string provenance) { - exists(Selector selector, AccessPath input | - normalizedSinkModel(selector, input, kind, provenance) - | - exists(CallExpr call | - selector.matchesCall(call) and - result = getSinkFromCall(call, input) - ) - or - exists(Callable callable | - selector.matchesCallable(callable) and - result = getSinkFromCallable(callable, input) - ) - ) -} - -module Public { - /** Provides access to data from library models. */ - module Models { - /** Holds if `node` is a source of the given `kind`. */ - predicate isSource(DataFlow::Node node, string kind) { node = getASource(kind, _) } - - /** Holds if `node` is a sink of the given `kind`. */ - predicate isSink(DataFlow::Node node, string kind) { node = getASink(kind, _) } - } -} - -private module Debug { - query predicate invalidAccessPath(Selector selector, AccessPathToken ap) { - ( - normalizedSourceModel(selector, ap, _, _) - or - normalizedSinkModel(selector, ap, _, _) - or - normalizedSummaryModel(selector, ap, _, _, _) - or - normalizedSummaryModel(selector, _, ap, _, _) - ) and - ap.getName() = ["Argument", "Parameter"] and - ( - exists(int n | - parseInt(ap.getAnArgument()) = n and - not n in [0 .. selector.getPositionalArity() - 1] - ) - or - exists(string name | - name = ap.getAnArgument().regexpCapture("(.*):", 1) and - not name = selector.getANamedArgument() - ) - ) - } -} diff --git a/unified/ql/lib/codeql/unified/internal/mad/TypeModelGenerator.qll b/unified/ql/lib/codeql/unified/internal/mad/TypeModelGenerator.qll new file mode 100644 index 000000000000..7142cbaba029 --- /dev/null +++ b/unified/ql/lib/codeql/unified/internal/mad/TypeModelGenerator.qll @@ -0,0 +1,604 @@ +/** + * Provides a graph for generating `typeModel` rows from `.swiftinterface` files. + * + * The graph is exported using `codeql.mad.dynamic.GraphExport`. Its nodes are mostly name-binding + * nodes, such as module scopes and the static/instance namespaces of classes declared in + * `.swiftinterface` files, with additional nodes for callables, function types, and types that + * are referenced but not declared in the database (such as types imported from Objective-C). + */ + +private import unified +private import codeql.mad.dynamic.GraphExport +private import codeql.unified.internal.StaticNameBinding +private import codeql.unified.internal.NameBindingPlugin +private import codeql.unified.internal.NameBindingPluginSwift as NameBindingPluginSwift +private import codeql.unified.internal.mad.DynamicMaDExtensions as Extensions +private import codeql.unified.internal.mad.DynamicMaD as DynamicMaD + +/** Gets the name of the module described by the `.swiftinterface` file containing `n`. */ +private string getModuleName(AstNode n) { + exists(NameBindingPluginSwift::SwiftInterfaceModule mod | + mod.getFile() = n.getFile() and + result = mod.getModuleName() + ) +} + +/** Holds if `n` is in a `.swiftinterface` file. */ +private predicate isInInterface(AstNode n) { exists(getModuleName(n)) } + +/** + * Gets the name of a module declaring a top-level type named `name`, excluding the module containing `ref`. + */ +private string getAnotherModuleDeclaringType(Expr ref, string name) { + exists(ClassLikeDeclaration cls | + cls.getName() = name and + cls.getParent().getParent() instanceof TopLevel and + result = getModuleName(cls) and + result != getModuleName(ref) + ) +} + +/** Gets the names of the types defined in the `Swift` module, which are visible everywhere. */ +private predicate isBuiltinTypeName(string name) { + name = any(ClassLikeDeclaration cls | cls.getFile().getBaseName() = "types.swift").getName() +} + +/** Gets the class declaration referenced by the type expression `te`, if it is declared in an interface file. */ +private ClassLikeDeclaration getReferencedClass(Expr te) { + result.getNameNode() = getStaticBindingTargetFromRef(te) and + isInInterface(result) +} + +/** Holds if `te` refers to something that is not a type we can name, such as a type parameter. */ +private predicate isUnnameableTypeRef(Expr te) { + exists(NameBinding target | target = getStaticBindingTargetFromRef(te) | + not target = any(ClassLikeDeclaration cls).getNameNode() + ) + or + te.(Identifier).getValue() = ["Self", "Any", "AnyObject", "Void", "Never"] +} + +/** + * Gets the qualified type string of the class `cls`, such as `Foundation.FileManager`. + */ +string getClassTypeString(ClassLikeDeclaration cls) { + isInInterface(cls) and + not exists(cls.getExtensionTarget()) and + ( + exists(ClassLikeDeclaration parent | + cls = parent.getAMember() and + result = getContainerTypeString(parent) + "." + cls.getName() + ) + or + cls.getParent().getParent() instanceof TopLevel and + result = getModuleName(cls) + "." + cls.getName() + ) +} + +/** Gets the type string of the class or extension `container`. */ +private string getContainerTypeString(ClassLikeDeclaration container) { + result = getClassTypeString(container) + or + result = getTypeStringFromTypeExpr(container.getExtensionTarget()) +} + +/** + * Gets the type string denoted by the type expression `te` appearing in an interface file. + * + * References to types that are not declared in the database are assumed to come from the + * module containing the reference, unless they are names of builtin types. + */ +string getTypeStringFromTypeExpr(Expr te) { + isInInterface(te) and + ( + result = getClassTypeString(getReferencedClass(te)) + or + not exists(getReferencedClass(te)) and + not isUnnameableTypeRef(te) and + ( + exists(string name | name = te.(Identifier).getValue() | + // Prefer a unique declaration in another module, then builtins, then the current module + if exists(unique(string m | m = getAnotherModuleDeclaringType(te, name))) + then result = unique(string m | m = getAnotherModuleDeclaringType(te, name)) + "." + name + else + if isBuiltinTypeName(name) + then result = "Swift." + name + else result = getModuleName(te) + "." + name + ) + or + exists(MemberAccessExpr access | access = te | + // Module-qualified reference, `M.T` + exists(string moduleName | + isModuleRefInInterface(access.getBase(), moduleName) and + result = moduleName + "." + access.getMemberName() + ) + or + not isModuleRefInInterface(access.getBase(), _) and + result = getTypeStringFromTypeExpr(access.getBase()) + "." + access.getMemberName() + ) + ) + or + result = getTypeStringFromTypeExpr(getUnwrappedTypeExpr(te)) + ) +} + +/** + * Holds if `e` is a reference to the module `moduleName` from an interface file, such as `Foundation` + * in `Foundation.URL`. + */ +private predicate isModuleRefInInterface(Identifier e, string moduleName) { + isInInterface(e) and + e.getValue() = moduleName and + not exists(getReferencedClass(e)) and + ( + moduleName = any(NameBindingPluginSwift::SwiftInterfaceModule m).getModuleName() + or + exists(ImportDeclaration imprt | + imprt.getFile() = e.getFile() and + moduleName = imprt.getImportedExpr().(Identifier).getValue() + ) + ) +} + +/** Gets the type expression wrapped by `te`, such as `T` in `T?`, `Array` or `inout T`. */ +private Expr getUnwrappedTypeExpr(Expr te) { + exists(GenericTypeExpr gte | gte = te | + if gte.getBase().(Identifier).getValue() = "Optional" + then result = gte.getTypeArgument(0) + else result = gte.getBase() + ) + or + result = te.(ModifiedTypeExpr).getType() +} + +/** Holds if `te` is a type expression appearing in a relevant position of an interface file. */ +private predicate isTypeExprInInterface(Expr te) { + isInInterface(te) and + ( + te = any(VariableDeclaration decl).getType() + or + te = any(Callable c).getReturnType() + or + te = any(Parameter p).getType() + or + te = any(BaseType b).getType() + or + te = any(ClassLikeDeclaration cls).getExtensionTarget() + or + te = getUnwrappedTypeExpr(any(Expr e | isTypeExprInInterface(e))) + ) +} + +/** Holds if `decl` should not be exported. */ +private predicate isHidden(AstNode decl) { + decl.(Member).getNameNode().getValue().matches("\\_%") + or + decl.hasModifier(["internal", "private", "fileprivate", "@usableFromInline"]) + or + exists(Modifier mod | mod.getParent() = decl | + mod.getValue().matches("@\\_spi%") + or + mod.getValue().regexpMatch("@available\\(\\s*\\*\\s*,\\s*unavailable\\b.*") + ) +} + +/** Holds if `member` is a static member, or a nested type. */ +private predicate isStaticDecl(Member member) { + member.hasModifier(["static", "class", "enum_case"]) + or + member instanceof ConstructorDeclaration + or + member instanceof ClassLikeDeclaration + or + member instanceof TypeAliasDeclaration +} + +/** Gets the name of `member`, using `init` for initializers. */ +private string getMemberName(Member member) { + if member instanceof ConstructorDeclaration + then result = "init" + else result = member.getNameNode().getValue().regexpReplaceAll("^`(.*)`$", "$1") +} + +/** + * Holds if `type` is relevant for the exported type models, because it is used by a source, sink, + * or summary model. + * + * Note that this does not take existing type models into account, as that would make the output + * depend on previously generated type models. + */ +private predicate isRelevantType(string type) { + Extensions::sourceModel(type, _, _, _) + or + Extensions::sinkModel(type, _, _, _) + or + Extensions::summaryModel(type, _, _, _, any(string kind | kind != "type"), _) +} + +private newtype TNode = + /** A module scope or class namespace from an interface file. */ + MkNamespace(NamespaceNode ns) { + exists(NameBindingPluginSwift::SwiftInterfaceModule mod | ns.isModuleScopeNode(mod)) + or + exists(ClassLikeDeclaration cls | + ns.isInstanceOrStaticMemberNamespace(cls) and + exists(getClassTypeString(cls)) + ) + } or + /** A type that is not declared in the database (`type` can also be a module or metatype). */ + MkExternal(string type) { + type = getTypeStringFromTypeExpr(any(Expr te | isTypeExprInInterface(te))) + ["", ".Type"] + or + exists(ImportDeclaration imprt | + isInInterface(imprt) and + imprt.hasModifier("@_exported") and + type = imprt.getImportedExpr().(Identifier).getValue() + ) + } or + /** A function or initializer declared in an interface file. */ + MkCallable(Callable c) { + isInInterface(c) and + not isHidden(c) and + (c instanceof FunctionDeclaration or c instanceof ConstructorDeclaration) + } or + /** A function type appearing as the type of a parameter. */ + MkFunctionType(FunctionExpr te) { isTypeExprInInterface(te) } + +/** A node in the graph to export. */ +class Node extends TNode { + /** Gets the name-binding node wrapped by this node, if any. */ + NamespaceNode asNamespace() { this = MkNamespace(result) } + + /** Gets the callable wrapped by this node, if any. */ + Callable asCallable() { this = MkCallable(result) } + + /** Gets the type string of the external type represented by this node, if any. */ + string asExternal() { this = MkExternal(result) } + + /** Gets a string representation of this node. */ + string toString() { + result = this.asNamespace().toString() + or + result = "external " + this.asExternal() + or + result = "callable " + this.asCallable().toString() + or + exists(FunctionExpr te | this = MkFunctionType(te) | result = "function type " + te.toString()) + } + + /** Gets the location of this node. */ + Location getLocation() { + result = this.asNamespace().getLocation() + or + result = this.asCallable().getLocation() + or + exists(FunctionExpr te | this = MkFunctionType(te) | result = te.getLocation()) + } +} + +/** Gets the type string naming `node`, if it represents a module or a type. */ +string getNodeTypeString(Node node) { + exists(NameBindingPluginSwift::SwiftInterfaceModule mod | + node.asNamespace().isModuleScopeNode(mod) and + result = mod.getModuleName() + ) + or + exists(ClassLikeDeclaration cls | + node.asNamespace().isInstanceMemberNamespace(cls) and + result = getClassTypeString(cls) + or + node.asNamespace().isStaticMemberNamespace(cls) and + result = getClassTypeString(cls) + ".Type" + ) + or + result = node.asExternal() +} + +/** Gets the node for the given type string, which may be a module, instance type, or metatype. */ +Node getNodeFromTypeString(string type) { getNodeTypeString(result) = type } + +/** Gets the node representing instances of the type denoted by `te`. */ +private Node getInstanceNodeFromTypeExpr(Expr te) { + isTypeExprInInterface(te) and + ( + result = MkFunctionType(te) + or + not te instanceof FunctionExpr and + result = getNodeFromTypeString(getTypeStringFromTypeExpr(te)) + ) +} + +/** Gets a namespace that holds the members of the type represented by `node`, including extensions. */ +private ClassLikeDeclaration getAMemberContainer(Node node, boolean isStatic) { + exists(ClassLikeDeclaration cls | + node.asNamespace().isInstanceMemberNamespace(cls) and isStatic = false + or + node.asNamespace().isStaticMemberNamespace(cls) and isStatic = true + | + result = cls + or + result.getExtensionTarget() = any(Expr te | getReferencedClass(te) = cls) + ) + or + exists(string type | + isStatic = false and + type = node.asExternal() + or + isStatic = true and + type + ".Type" = node.asExternal() + | + getTypeStringFromTypeExpr(result.getExtensionTarget()) = type and + not exists(getReferencedClass(result.getExtensionTarget())) + ) +} + +/** Holds if `member` is a member of the type represented by `node`. */ +private predicate hasMember(Node node, Member member, string name) { + exists(ClassLikeDeclaration container, boolean isStatic | + container = getAMemberContainer(node, isStatic) and + member = container.getAMember() and + not isHidden(member) and + name = getMemberName(member) and + (if isStaticDecl(member) then isStatic = true else isStatic = false) + ) + or + // Top-level members of a module + exists(NameBindingPluginSwift::SwiftInterfaceModule mod | + node.asNamespace().isModuleScopeNode(mod) and + member = mod.getBody().getAStmt() and + not isHidden(member) and + name = getMemberName(member) + ) +} + +/** Gets the external name of a parameter of `c`, which must be passed explicitly in every call. */ +private string getARequiredLabel(Callable c) { + exists(Parameter p | + p = c.getAParameter() and + result = p.getExternalName() and + not exists(p.getDefault()) + ) +} + +/** Gets the external name of a parameter of `c`. */ +private string getALabel(Callable c) { result = c.getAParameter().getExternalName() } + +/** Holds if `c1` and `c2` have the same set of argument labels. */ +private predicate sameLabels(Callable c1, Callable c2) { + forall(string l | l = getALabel(c1) | l = getALabel(c2)) and + forall(string l | l = getALabel(c2) | l = getALabel(c1)) +} + +/** Holds if `c` and `other` are overloads in the type represented by `node`. */ +private predicate overloads(Node node, Callable c, Callable other) { + exists(string name | + hasMember(node, c, name) and + hasMember(node, other, name) and + not sameLabels(c, other) + ) +} + +/** + * Gets a token that distinguishes calls to `c` from calls to `other`. + * + * We prefer a `WithNamedArgument` token for a required label of `c` that `other` does not have, + * and otherwise a `WithoutNamedArgument` token for a required label of `other` that `c` does not have. + */ +private string getDistinguishingToken(Node node, Callable c, Callable other) { + overloads(node, c, other) and + exists(getALabel(c)) and + ( + result = + "WithNamedArgument[" + + min(string l | l = getARequiredLabel(c) and not l = getALabel(other) | l) + "]" + or + not exists(string l | l = getARequiredLabel(c) and not l = getALabel(other)) and + result = + "WithoutNamedArgument[" + + min(string l | l = getARequiredLabel(other) and not l = getALabel(c) | l) + "]" + ) +} + +/** + * Gets the access path for the member `c` in `node`, including filters needed to distinguish + * it from its overloads. + * + * Callables that take no named arguments are not filtered. + */ +private string getMemberPath(Node node, Member member, string name) { + hasMember(node, member, name) and + result = + "Member[" + name + "]" + + concat(string token | + token = getDistinguishingToken(node, member, _) + | + "." + token order by token + ) +} + +/** Gets the instance node for the type of the variable or function `member`. */ +private Node getTypeOfMember(Member member) { + result = getInstanceNodeFromTypeExpr(member.(VariableDeclaration).getType()) + or + result = getInstanceNodeFromTypeExpr(member.(AccessorDeclaration).getReturnType()) + or + exists(ClassLikeDeclaration cls | + member = cls and + result.asNamespace().isStaticMemberNamespace(cls) + ) + or + result = MkCallable(member) +} + +/** Holds if `c` returns `Self`. */ +private predicate returnsSelf(Callable c) { + exists(Expr te | te = c.getReturnType() | + te.(Identifier).getValue() = "Self" + or + getUnwrappedTypeExpr(te).(Identifier).getValue() = "Self" + ) +} + +/** Holds if there is an edge `pred -> succ` labeled with `path`. */ +predicate graphEdge(Node pred, string path, Node succ) { + exists(Member member, string name | + path = getMemberPath(pred, member, name) and + succ = getTypeOfMember(member) + ) + or + exists(Callable c | pred = MkCallable(c) | + path = "ReturnValue" and + not returnsSelf(c) and + ( + succ = getInstanceNodeFromTypeExpr(c.getReturnType()) + or + exists(ClassLikeDeclaration cls | + c = cls.getAMember() and + c instanceof ConstructorDeclaration and + succ.asNamespace().isInstanceMemberNamespace(cls) + ) + or + c instanceof ConstructorDeclaration and + exists(ClassLikeDeclaration ext, string type | + c = ext.getAMember() and + type = getTypeStringFromTypeExpr(ext.getExtensionTarget()) and + succ = getNodeFromTypeString(type) + ) + ) + or + exists(Parameter p | + p = c.getAParameter() and + succ = MkFunctionType(getFunctionTypeExpr(p.getType())) + | + path = "Argument[" + p.getExternalName() + ":]" + or + not exists(p.getExternalName()) and + path = "Argument[" + p.getPositionalIndex() + "]" + ) + ) + or + exists(FunctionExpr te, int i | + pred = MkFunctionType(te) and + path = "Parameter[" + i + "]" and + succ = getInstanceNodeFromTypeExpr(te.getParameter(i).getType()) + ) + or + // Subtyping + exists(ClassLikeDeclaration container, Expr base | + container = getAMemberContainer(pred, false) and + base = container.getABaseType().getType() and + path = "" and + succ = getInstanceNodeFromTypeExpr(base) and + succ != pred + ) + or + // Re-exported modules + exists(ImportDeclaration imprt, NameBindingPluginSwift::SwiftInterfaceModule mod | + imprt.hasModifier("@_exported") and + imprt = mod.getBody().getAStmt() and + pred.asNamespace().isModuleScopeNode(mod) and + path = "" and + succ = getNodeFromTypeString(imprt.getImportedExpr().(Identifier).getValue()) and + succ != pred + ) +} + +/** Gets the function type wrapped by `te`, possibly inside optionals and modifiers. */ +private FunctionExpr getFunctionTypeExpr(Expr te) { + result = te + or + result = getFunctionTypeExpr(getUnwrappedTypeExpr(te)) +} + +/** The configuration for exporting the type graph. */ +module TypeGraphConfig implements GraphExportSig { + bindingset[pred] + predicate edge(Node pred, string path, Node succ) { graphEdge(pred, path, succ) } + + predicate exposedName(Node node, string type, string path) { + path = "" and + ( + node.asNamespace().isModuleScopeNode(_) and + type = getNodeTypeString(node) + or + type = node.asExternal() + ) + } + + predicate suggestedName(Node node, string name) { + node.asNamespace().isInstanceOrStaticMemberNamespace(_) and + name = getNodeTypeString(node) + } + + predicate mustBeNamed(Node node) { exists(getNodeTypeString(node)) } + + predicate shouldContain(Node node) { isRelevantType(getNodeTypeString(node)) } + + bindingset[host] + predicate hasTypeSummary(Node host, string path) { + exists(Member member, string name | + returnsSelf(member) and + path = getMemberPath(host, member, name) + ".ReturnValue" + ) + } + + predicate shouldNotContain(Node node) { isHidden(node.asCallable()) } +} + +private module Exported = GraphExport; + +/** + * Holds if `(type1, type2, path)` is implied by conventions of the interpreter, and need + * not be emitted. + */ +bindingset[type1, type2, path] +private predicate isImpliedTypeModel(string type1, string type2, string path) { + // Metatypes of nested types: `A.B.Type` is implied by `(A.Type, Member[B])` or `(A, Member[B])` for modules + exists(string parent, string name | + DynamicMaD::parseMetatypeString(type1, parent, name) and + type2 = parent and + path = "Member[" + name + "]" + ) + or + // Instances obtained by calling an initializer + type2 = type1 + ".Type" and + path.regexpMatch("Member\\[init\\](\\.With(out)?NamedArgument\\[[^\\]]*\\])*\\.ReturnValue") +} + +/** + * Holds if rows describing how to obtain values of `type` should be emitted. + * + * To keep the output small, we only emit rows leading directly to a relevant type, its metatype, + * or a module containing a relevant type. Intermediate types are not named, as they can usually be + * recognized from type annotations in the code being analyzed. + */ +private predicate isRelevantOutputType(string type) { + isRelevantType(type) + or + type = any(string t | isRelevantType(t)) + ".Type" + or + type = any(string t | isRelevantType(t)).regexpCapture("([^.]+)\\..*", 1) +} + +/** Holds if `sub` is a direct subtype of `sup` in the exported graph. */ +private predicate directSubtype(string sub, string sup) { Exported::typeModel(sup, sub, "") } + +/** Holds if `(type1, type2, path)` should be emitted as a type model. */ +predicate typeModel(string type1, string type2, string path) { + Exported::typeModel(type1, type2, path) and + isRelevantOutputType(type1) and + not isImpliedTypeModel(type1, type2, path) + or + // Subtyping relations are flattened, since intermediate types may not be emitted + isRelevantOutputType(type1) and + directSubtype+(type2, type1) and + not directSubtype(type2, type1) and + type1 != type2 and + path = "" +} + +/** Holds if `(type, path, input, output, kind)` should be emitted as a summary model. */ +predicate summaryModel(string type, string path, string input, string output, string kind) { + Exported::summaryModel(type, path, input, output, kind) and + isRelevantOutputType(type) +} diff --git a/unified/ql/lib/ext/generated/swift-type-models.model.yml b/unified/ql/lib/ext/generated/swift-type-models.model.yml new file mode 100644 index 000000000000..5f9057a2fd7b --- /dev/null +++ b/unified/ql/lib/ext/generated/swift-type-models.model.yml @@ -0,0 +1,1973 @@ +# Generated by unified/scripts/generate-type-models.sh. Do not edit by hand. +extensions: + - addsTo: + pack: codeql/unified-all + extensible: typeModel + data: + - ["Foundation.ContiguousBytes", "CryptoKit.AES.GCM.Nonce", ""] + - ["Foundation.ContiguousBytes", "CryptoKit.ChaChaPoly.Nonce", ""] + - ["Foundation.ContiguousBytes", "CryptoKit.Digest", ""] + - ["Foundation.ContiguousBytes", "CryptoKit.HashedAuthenticationCode", ""] + - ["Foundation.ContiguousBytes", "CryptoKit.Insecure.MD5Digest", ""] + - ["Foundation.ContiguousBytes", "CryptoKit.Insecure.SHA1Digest", ""] + - ["Foundation.ContiguousBytes", "CryptoKit.MessageAuthenticationCode", ""] + - ["Foundation.ContiguousBytes", "CryptoKit.P256.Signing.ECDSASignature", ""] + - ["Foundation.ContiguousBytes", "CryptoKit.P384.Signing.ECDSASignature", ""] + - ["Foundation.ContiguousBytes", "CryptoKit.P521.Signing.ECDSASignature", ""] + - ["Foundation.ContiguousBytes", "CryptoKit.SHA256Digest", ""] + - ["Foundation.ContiguousBytes", "CryptoKit.SHA384Digest", ""] + - ["Foundation.ContiguousBytes", "CryptoKit.SHA3_256Digest", ""] + - ["Foundation.ContiguousBytes", "CryptoKit.SHA3_384Digest", ""] + - ["Foundation.ContiguousBytes", "CryptoKit.SHA3_512Digest", ""] + - ["Foundation.ContiguousBytes", "CryptoKit.SHA512Digest", ""] + - ["Foundation.ContiguousBytes", "CryptoKit.SharedSecret", ""] + - ["Foundation.ContiguousBytes", "CryptoKit.SymmetricKey", ""] + - ["Foundation.ContiguousBytes", "Foundation.CollectionOfOne", ""] + - ["Foundation.ContiguousBytes", "Foundation.Data", ""] + - ["Foundation.ContiguousBytes", "Foundation.DispatchData.Region", ""] + - ["Foundation.ContiguousBytes", "Foundation.InlineArray", ""] + - ["Foundation.ContiguousBytes", "Swift.Array", ""] + - ["Foundation.ContiguousBytes", "Swift.ArraySlice", ""] + - ["Foundation.ContiguousBytes", "Swift.ContiguousArray", ""] + - ["Foundation.ContiguousBytes", "Swift.EmptyCollection", ""] + - ["Foundation.ContiguousBytes", "Swift.MutableRawSpan", ""] + - ["Foundation.ContiguousBytes", "Swift.MutableSpan", ""] + - ["Foundation.ContiguousBytes", "Swift.OutputRawSpan", ""] + - ["Foundation.ContiguousBytes", "Swift.OutputSpan", ""] + - ["Foundation.ContiguousBytes", "Swift.RawSpan", ""] + - ["Foundation.ContiguousBytes", "Swift.Slice", ""] + - ["Foundation.ContiguousBytes", "Swift.Span", ""] + - ["Foundation.ContiguousBytes", "Swift.UTF8Span", ""] + - ["Foundation.ContiguousBytes", "Swift.UnsafeBufferPointer", ""] + - ["Foundation.ContiguousBytes", "Swift.UnsafeMutableBufferPointer", ""] + - ["Foundation.ContiguousBytes", "Swift.UnsafeMutableRawBufferPointer", ""] + - ["Foundation.ContiguousBytes", "Swift.UnsafeRawBufferPointer", ""] + - ["Foundation.Data", "Foundation.CharacterSet", "Member[bitmapRepresentation]"] + - ["Foundation.Data", "Foundation.Data", "Member[base64EncodedData].ReturnValue"] + - ["Foundation.Data", "Foundation.FileHandle", "Member[readToEnd].ReturnValue"] + - ["Foundation.Data", "Foundation.FileHandle", "Member[read].ReturnValue"] + - ["Foundation.Data", "Foundation.JSONEncoder", "Member[encode].ReturnValue"] + - ["Foundation.Data", "Foundation.JSONEncoder", "Member[encode].WithNamedArgument[configuration].ReturnValue"] + - ["Foundation.Data", "Foundation.JSONEncoder.DataEncodingStrategy.custom.Type", "Member[init].Argument[0].Parameter[0]"] + - ["Foundation.Data", "Foundation.PropertyListEncoder", "Member[encode].ReturnValue"] + - ["Foundation.Data", "Foundation.PropertyListEncoder", "Member[encode].WithNamedArgument[configuration].ReturnValue"] + - ["Foundation.Data", "Foundation.URL", "Member[bookmarkData].ReturnValue"] + - ["Foundation.Data", "Foundation.URL", "Member[dataRepresentation]"] + - ["Foundation.Data", "Foundation.URL.Type", "Member[bookmarkData].ReturnValue"] + - ["Foundation.Data", "Foundation.URLError", "Member[downloadTaskResumeData]"] + - ["Foundation.Data", "Foundation.URLError", "Member[uploadTaskResumeData]"] + - ["Foundation.Data", "Foundation.URLRequest", "Member[httpBody]"] + - ["Foundation.Data", "Swift.String", "Member[data].ReturnValue"] + - ["Foundation.Data", "Swift.StringProtocol", "Member[data].ReturnValue"] + - ["Foundation.DataProtocol", "Foundation.Data", ""] + - ["Foundation.DataProtocol", "Foundation.DispatchData", ""] + - ["Foundation.DataProtocol", "Foundation.DispatchData.Region", ""] + - ["Foundation.DataProtocol", "Foundation.MutableDataProtocol", ""] + - ["Foundation.DataProtocol", "Foundation.NSData", ""] + - ["Foundation.DataProtocol", "Swift.Array", ""] + - ["Foundation.DataProtocol", "Swift.ArraySlice", ""] + - ["Foundation.DataProtocol", "Swift.ContiguousArray", ""] + - ["Foundation.DataProtocol", "Swift.EmptyCollection", ""] + - ["Foundation.DataProtocol", "Swift.Repeated", ""] + - ["Foundation.DataProtocol", "Swift.Slice", ""] + - ["Foundation.DataProtocol", "Swift.UnsafeBufferPointer", ""] + - ["Foundation.DataProtocol", "Swift.UnsafeRawBufferPointer", ""] + - ["Foundation.NSString", "Foundation.AttributeScopes.FoundationAttributes.ListItemDelimiterAttribute.Type", "Member[objectiveCValue].ReturnValue"] + - ["Foundation.NSString", "Foundation.NSString", "Member[appendingFormat].ReturnValue"] + - ["Foundation.NSURL", "Foundation.FileManager", "Member[replaceItemAtURL].ReturnValue"] + - ["Foundation.URL", "Foundation.AttributeScopes.FoundationAttributes.LinkAttribute.Type", "Member[value].ReturnValue"] + - ["Foundation.URL", "Foundation.CocoaError", "Member[url]"] + - ["Foundation.URL", "Foundation.FileManager", "Member[replaceItemAt].ReturnValue"] + - ["Foundation.URL", "Foundation.URL", "Member[absoluteURL]"] + - ["Foundation.URL", "Foundation.URL", "Member[appendingPathComponent].ReturnValue"] + - ["Foundation.URL", "Foundation.URL", "Member[appendingPathComponent].WithNamedArgument[isDirectory].ReturnValue"] + - ["Foundation.URL", "Foundation.URL", "Member[appendingPathExtension].ReturnValue"] + - ["Foundation.URL", "Foundation.URL", "Member[appending].WithNamedArgument[component].ReturnValue"] + - ["Foundation.URL", "Foundation.URL", "Member[appending].WithNamedArgument[components].ReturnValue"] + - ["Foundation.URL", "Foundation.URL", "Member[appending].WithNamedArgument[path].ReturnValue"] + - ["Foundation.URL", "Foundation.URL", "Member[appending].WithNamedArgument[queryItems].ReturnValue"] + - ["Foundation.URL", "Foundation.URL", "Member[baseURL]"] + - ["Foundation.URL", "Foundation.URL", "Member[deletingLastPathComponent].ReturnValue"] + - ["Foundation.URL", "Foundation.URL", "Member[deletingPathExtension].ReturnValue"] + - ["Foundation.URL", "Foundation.URL", "Member[resolvingSymlinksInPath].ReturnValue"] + - ["Foundation.URL", "Foundation.URL", "Member[standardizedFileURL]"] + - ["Foundation.URL", "Foundation.URL", "Member[standardized]"] + - ["Foundation.URL", "Foundation.URL.ParseStrategy", "Member[parse].ReturnValue"] + - ["Foundation.URL", "Foundation.URL.Type", "Member[applicationDirectory]"] + - ["Foundation.URL", "Foundation.URL.Type", "Member[applicationSupportDirectory]"] + - ["Foundation.URL", "Foundation.URL.Type", "Member[cachesDirectory]"] + - ["Foundation.URL", "Foundation.URL.Type", "Member[currentDirectory].ReturnValue"] + - ["Foundation.URL", "Foundation.URL.Type", "Member[desktopDirectory]"] + - ["Foundation.URL", "Foundation.URL.Type", "Member[documentsDirectory]"] + - ["Foundation.URL", "Foundation.URL.Type", "Member[downloadsDirectory]"] + - ["Foundation.URL", "Foundation.URL.Type", "Member[homeDirectory]"] + - ["Foundation.URL", "Foundation.URL.Type", "Member[homeDirectory].WithNamedArgument[forUser].ReturnValue"] + - ["Foundation.URL", "Foundation.URL.Type", "Member[libraryDirectory]"] + - ["Foundation.URL", "Foundation.URL.Type", "Member[moviesDirectory]"] + - ["Foundation.URL", "Foundation.URL.Type", "Member[musicDirectory]"] + - ["Foundation.URL", "Foundation.URL.Type", "Member[picturesDirectory]"] + - ["Foundation.URL", "Foundation.URL.Type", "Member[sharedPublicDirectory]"] + - ["Foundation.URL", "Foundation.URL.Type", "Member[temporaryDirectory]"] + - ["Foundation.URL", "Foundation.URL.Type", "Member[trashDirectory]"] + - ["Foundation.URL", "Foundation.URL.Type", "Member[userDirectory]"] + - ["Foundation.URL", "Foundation.URLComponents", "Member[url]"] + - ["Foundation.URL", "Foundation.URLComponents", "Member[url].WithNamedArgument[relativeTo].ReturnValue"] + - ["Foundation.URL", "Foundation.URLError", "Member[failingURL]"] + - ["Foundation.URL", "Foundation.URLRequest", "Member[mainDocumentURL]"] + - ["Foundation.URL", "Foundation.URLRequest", "Member[url]"] + - ["Foundation.URL", "Foundation.URLResourceValues", "Member[parentDirectory]"] + - ["Foundation.URL", "Foundation.URLResourceValues", "Member[volumeURLForRemounting]"] + - ["Foundation.URL", "Foundation.URLResourceValues", "Member[volume]"] + - ["Foundation.URL", "UIKit.UIDocument.DidMoveToWritableLocationMessage", "Member[oldURL]"] + - ["Foundation.URL", "WebKit.WebPage", "Member[url]"] + - ["Foundation.URL", "WebKit.WebPage.BackForwardList.Item", "Member[initialURL]"] + - ["Foundation.URL", "WebKit.WebPage.BackForwardList.Item", "Member[url]"] + - ["Foundation.URL", "WebKit.WebPage.FormInfo", "Member[submissionURL]"] + - ["Foundation.URL.AsyncBytes", "Foundation.URL", "Member[resourceBytes]"] + - ["Foundation.URLSession", "Foundation.URLSession.DataTaskPublisher", "Member[session]"] + - ["Network.NWConnection", "Network.NWConnectionGroup", "Member[extract].ReturnValue"] + - ["Network.NWConnection", "Network.NWConnectionGroup.Message", "Member[extractConnection].ReturnValue"] + - ["Swift.Array", "CryptoKit.HPKE.AEAD.Type", "Member[allCases]"] + - ["Swift.Array", "CryptoKit.HPKE.KDF.Type", "Member[allCases]"] + - ["Swift.Array", "CryptoKit.HPKE.KEM.Type", "Member[allCases]"] + - ["Swift.Array", "Foundation.AttributedString", "Member[transform].ReturnValue"] + - ["Swift.Array", "Foundation.AttributedString.LocalizationOptions", "Member[concepts]"] + - ["Swift.Array", "Foundation.AttributedString.LocalizationOptions", "Member[replacements]"] + - ["Swift.Array", "Foundation.AttributedString.WritingDirection.Type", "Member[allCases]"] + - ["Swift.Array", "Foundation.Calendar", "Member[eraSymbols]"] + - ["Swift.Array", "Foundation.Calendar", "Member[longEraSymbols]"] + - ["Swift.Array", "Foundation.Calendar", "Member[monthSymbols]"] + - ["Swift.Array", "Foundation.Calendar", "Member[quarterSymbols]"] + - ["Swift.Array", "Foundation.Calendar", "Member[shortMonthSymbols]"] + - ["Swift.Array", "Foundation.Calendar", "Member[shortQuarterSymbols]"] + - ["Swift.Array", "Foundation.Calendar", "Member[shortStandaloneMonthSymbols]"] + - ["Swift.Array", "Foundation.Calendar", "Member[shortStandaloneQuarterSymbols]"] + - ["Swift.Array", "Foundation.Calendar", "Member[shortStandaloneWeekdaySymbols]"] + - ["Swift.Array", "Foundation.Calendar", "Member[shortWeekdaySymbols]"] + - ["Swift.Array", "Foundation.Calendar", "Member[standaloneMonthSymbols]"] + - ["Swift.Array", "Foundation.Calendar", "Member[standaloneQuarterSymbols]"] + - ["Swift.Array", "Foundation.Calendar", "Member[standaloneWeekdaySymbols]"] + - ["Swift.Array", "Foundation.Calendar", "Member[veryShortMonthSymbols]"] + - ["Swift.Array", "Foundation.Calendar", "Member[veryShortStandaloneMonthSymbols]"] + - ["Swift.Array", "Foundation.Calendar", "Member[veryShortStandaloneWeekdaySymbols]"] + - ["Swift.Array", "Foundation.Calendar", "Member[veryShortWeekdaySymbols]"] + - ["Swift.Array", "Foundation.Calendar", "Member[weekdaySymbols]"] + - ["Swift.Array", "Foundation.Calendar.RecurrenceRule", "Member[daysOfTheMonth]"] + - ["Swift.Array", "Foundation.Calendar.RecurrenceRule", "Member[daysOfTheYear]"] + - ["Swift.Array", "Foundation.Calendar.RecurrenceRule", "Member[hours]"] + - ["Swift.Array", "Foundation.Calendar.RecurrenceRule", "Member[minutes]"] + - ["Swift.Array", "Foundation.Calendar.RecurrenceRule", "Member[months]"] + - ["Swift.Array", "Foundation.Calendar.RecurrenceRule", "Member[seconds]"] + - ["Swift.Array", "Foundation.Calendar.RecurrenceRule", "Member[setPositions]"] + - ["Swift.Array", "Foundation.Calendar.RecurrenceRule", "Member[weekdays]"] + - ["Swift.Array", "Foundation.Calendar.RecurrenceRule", "Member[weeks]"] + - ["Swift.Array", "Foundation.CocoaError", "Member[underlyingErrors]"] + - ["Swift.Array", "Foundation.DispatchData", "Member[regions]"] + - ["Swift.Array", "Foundation.JSONDecoder.KeyDecodingStrategy.custom.Type", "Member[init].Argument[0].Parameter[0]"] + - ["Swift.Array", "Foundation.JSONEncoder.KeyEncodingStrategy.custom.Type", "Member[init].Argument[0].Parameter[0]"] + - ["Swift.Array", "Foundation.Locale", "Member[availableNumberingSystems]"] + - ["Swift.Array", "Foundation.Locale.Collation.Type", "Member[availableCollations]"] + - ["Swift.Array", "Foundation.Locale.Collation.Type", "Member[availableCollations].WithNamedArgument[for].ReturnValue"] + - ["Swift.Array", "Foundation.Locale.Currency.Type", "Member[isoCurrencies]"] + - ["Swift.Array", "Foundation.Locale.Language.Type", "Member[systemLanguages]"] + - ["Swift.Array", "Foundation.Locale.LanguageCode.Type", "Member[isoLanguageCodes]"] + - ["Swift.Array", "Foundation.Locale.MeasurementSystem.Type", "Member[measurementSystems]"] + - ["Swift.Array", "Foundation.Locale.NumberingSystem.Type", "Member[availableNumberingSystems]"] + - ["Swift.Array", "Foundation.Locale.Region", "Member[subRegions]"] + - ["Swift.Array", "Foundation.Locale.Region.Type", "Member[isoRegions]"] + - ["Swift.Array", "Foundation.Locale.Region.Type", "Member[isoRegions].WithNamedArgument[ofCategory].ReturnValue"] + - ["Swift.Array", "Foundation.Locale.Type", "Member[availableIdentifiers]"] + - ["Swift.Array", "Foundation.Locale.Type", "Member[commonISOCurrencyCodes]"] + - ["Swift.Array", "Foundation.Locale.Type", "Member[isoCurrencyCodes]"] + - ["Swift.Array", "Foundation.Locale.Type", "Member[isoLanguageCodes]"] + - ["Swift.Array", "Foundation.Locale.Type", "Member[isoRegionCodes]"] + - ["Swift.Array", "Foundation.Locale.Type", "Member[preferredLanguages]"] + - ["Swift.Array", "Foundation.Locale.Type", "Member[preferredLocales]"] + - ["Swift.Array", "Foundation.Morphology.CustomPronoun.Type", "Member[requiredKeys].ReturnValue"] + - ["Swift.Array", "Foundation.NSCoder", "Member[decodeArrayOfObjects].WithNamedArgument[ofClass].ReturnValue"] + - ["Swift.Array", "Foundation.NSCoder", "Member[decodeArrayOfObjects].WithNamedArgument[ofClasses].ReturnValue"] + - ["Swift.Array", "Foundation.NSData", "Member[regions]"] + - ["Swift.Array", "Foundation.NSKeyedUnarchiver.Type", "Member[unarchivedArrayOfObjects].WithNamedArgument[ofClass].ReturnValue"] + - ["Swift.Array", "Foundation.NSKeyedUnarchiver.Type", "Member[unarchivedArrayOfObjects].WithNamedArgument[ofClasses].ReturnValue"] + - ["Swift.Array", "Foundation.PresentationIntent", "Member[components]"] + - ["Swift.Array", "Foundation.ProgressManager.Properties.Throughput.Type", "Member[defaultSummary]"] + - ["Swift.Array", "Foundation.ProgressManager.Properties.Throughput.Type", "Member[finalSummary].ReturnValue"] + - ["Swift.Array", "Foundation.ProgressManager.Properties.Throughput.Type", "Member[merge].ReturnValue"] + - ["Swift.Array", "Foundation.ProgressReporter", "Member[summary].ReturnValue"] + - ["Swift.Array", "Foundation.TermOfAddress", "Member[pronouns]"] + - ["Swift.Array", "Foundation.TimeZone.Type", "Member[knownTimeZoneIdentifiers]"] + - ["Swift.Array", "Foundation.URL", "Member[pathComponents]"] + - ["Swift.Array", "Foundation.URLComponents", "Member[percentEncodedQueryItems]"] + - ["Swift.Array", "Foundation.URLComponents", "Member[queryItems]"] + - ["Swift.Array", "Foundation.URLResourceValues", "Member[tagNames]"] + - ["Swift.Array", "Network.Coder.Metadata", "Member[other]"] + - ["Swift.Array", "Network.DTLS.Metadata", "Member[other]"] + - ["Swift.Array", "Network.Framer.Metadata", "Member[other]"] + - ["Swift.Array", "Network.IP.Metadata", "Member[other]"] + - ["Swift.Array", "Network.NWBrowser.Result", "Member[interfaces]"] + - ["Swift.Array", "Network.NWConnection.ContentContext", "Member[protocolMetadata]"] + - ["Swift.Array", "Network.NWConnection.DataTransferReport", "Member[pathReports]"] + - ["Swift.Array", "Network.NWConnection.EstablishmentReport", "Member[handshakes]"] + - ["Swift.Array", "Network.NWConnection.EstablishmentReport", "Member[resolutions]"] + - ["Swift.Array", "Network.NWGroupDescriptor", "Member[members]"] + - ["Swift.Array", "Network.NWMulticastGroup", "Member[members]"] + - ["Swift.Array", "Network.NWMultiplexGroup", "Member[members]"] + - ["Swift.Array", "Network.NWParameters", "Member[prohibitedInterfaceTypes]"] + - ["Swift.Array", "Network.NWParameters", "Member[prohibitedInterfaces]"] + - ["Swift.Array", "Network.NWParameters.PrivacyContext", "Member[proxyConfigurations]"] + - ["Swift.Array", "Network.NWParameters.ProtocolStack", "Member[applicationProtocols]"] + - ["Swift.Array", "Network.NWPath", "Member[availableInterfaces]"] + - ["Swift.Array", "Network.NWPath", "Member[gateways]"] + - ["Swift.Array", "Network.NWProtocolQUIC.Options", "Member[alpn]"] + - ["Swift.Array", "Network.NWProtocolWebSocket.Metadata", "Member[additionalServerHeaders]"] + - ["Swift.Array", "Network.NWProtocolWebSocket.Options", "Member[setClientRequestHandler].Argument[handler:].Parameter[0]"] + - ["Swift.Array", "Network.NWProtocolWebSocket.Options", "Member[setClientRequestHandler].Argument[handler:].Parameter[1]"] + - ["Swift.Array", "Network.NWProtocolWebSocket.Response", "Member[additionalHeaders]"] + - ["Swift.Array", "Network.NetworkBrowser", "Member[run].Argument[0].Parameter[0]"] + - ["Swift.Array", "Network.ProtocolMetadataBuilder.Type", "Member[buildBlock].ReturnValue"] + - ["Swift.Array", "Network.ProxyConfiguration", "Member[excludedDomains]"] + - ["Swift.Array", "Network.ProxyConfiguration", "Member[matchDomains]"] + - ["Swift.Array", "Network.QUICDatagram.Metadata", "Member[other]"] + - ["Swift.Array", "Network.QUICStream.Metadata", "Member[other]"] + - ["Swift.Array", "Network.TCP.Metadata", "Member[other]"] + - ["Swift.Array", "Network.TLS.Metadata", "Member[other]"] + - ["Swift.Array", "Network.TLV.Metadata", "Member[other]"] + - ["Swift.Array", "Network.UDP.Metadata", "Member[other]"] + - ["Swift.Array", "Network.URLSessionConfiguration", "Member[proxyConfigurations]"] + - ["Swift.Array", "Network.WebSocket.Metadata", "Member[other]"] + - ["Swift.Array", "Swift.AnyBidirectionalCollection", "Member[filter].ReturnValue"] + - ["Swift.Array", "Swift.AnyBidirectionalCollection", "Member[map].ReturnValue"] + - ["Swift.Array", "Swift.AnyCollection", "Member[filter].ReturnValue"] + - ["Swift.Array", "Swift.AnyCollection", "Member[map].ReturnValue"] + - ["Swift.Array", "Swift.AnyRandomAccessCollection", "Member[filter].ReturnValue"] + - ["Swift.Array", "Swift.AnyRandomAccessCollection", "Member[map].ReturnValue"] + - ["Swift.Array", "Swift.AnySequence", "Member[dropLast].ReturnValue"] + - ["Swift.Array", "Swift.AnySequence", "Member[filter].ReturnValue"] + - ["Swift.Array", "Swift.AnySequence", "Member[map].ReturnValue"] + - ["Swift.Array", "Swift.AnySequence", "Member[prefix].WithNamedArgument[while].ReturnValue"] + - ["Swift.Array", "Swift.AnySequence", "Member[suffix].ReturnValue"] + - ["Swift.Array", "Swift.Array.Type", "Member[+].ReturnValue"] + - ["Swift.Array", "Swift.BidirectionalCollection", "Member[matches].ReturnValue"] + - ["Swift.Array", "Swift.BidirectionalCollection", "Member[ranges].ReturnValue"] + - ["Swift.Array", "Swift.BidirectionalCollection", "Member[split].ReturnValue"] + - ["Swift.Array", "Swift.Collection", "Member[flatMap].ReturnValue"] + - ["Swift.Array", "Swift.Collection", "Member[map].ReturnValue"] + - ["Swift.Array", "Swift.Collection", "Member[ranges].ReturnValue"] + - ["Swift.Array", "Swift.Collection", "Member[split].WithNamedArgument[separator].ReturnValue"] + - ["Swift.Array", "Swift.Collection", "Member[split].WithNamedArgument[whereSeparator].ReturnValue"] + - ["Swift.Array", "Swift.CollectionDifference", "Member[insertions]"] + - ["Swift.Array", "Swift.CollectionDifference", "Member[removals]"] + - ["Swift.Array", "Swift.CommandLine.Type", "Member[arguments]"] + - ["Swift.Array", "Swift.DecodingError.Context", "Member[codingPath]"] + - ["Swift.Array", "Swift.EncodingError.Context", "Member[codingPath]"] + - ["Swift.Array", "Swift.KeyedDecodingContainer", "Member[allKeys]"] + - ["Swift.Array", "Swift.KeyedDecodingContainer", "Member[codingPath]"] + - ["Swift.Array", "Swift.KeyedDecodingContainerProtocol", "Member[allKeys]"] + - ["Swift.Array", "Swift.KeyedDecodingContainerProtocol", "Member[codingPath]"] + - ["Swift.Array", "Swift.KeyedEncodingContainer", "Member[codingPath]"] + - ["Swift.Array", "Swift.KeyedEncodingContainerProtocol", "Member[codingPath]"] + - ["Swift.Array", "Swift.Sequence", "Member[compactMap].ReturnValue"] + - ["Swift.Array", "Swift.Sequence", "Member[dropLast].ReturnValue"] + - ["Swift.Array", "Swift.Sequence", "Member[filter].ReturnValue"] + - ["Swift.Array", "Swift.Sequence", "Member[flatMap].ReturnValue"] + - ["Swift.Array", "Swift.Sequence", "Member[map].ReturnValue"] + - ["Swift.Array", "Swift.Sequence", "Member[prefix].WithNamedArgument[while].ReturnValue"] + - ["Swift.Array", "Swift.Sequence", "Member[reversed].ReturnValue"] + - ["Swift.Array", "Swift.Sequence", "Member[shuffled].ReturnValue"] + - ["Swift.Array", "Swift.Sequence", "Member[shuffled].WithNamedArgument[using].ReturnValue"] + - ["Swift.Array", "Swift.Sequence", "Member[sorted].ReturnValue"] + - ["Swift.Array", "Swift.Sequence", "Member[sorted].WithNamedArgument[by].ReturnValue"] + - ["Swift.Array", "Swift.Sequence", "Member[sorted].WithNamedArgument[using].ReturnValue"] + - ["Swift.Array", "Swift.Sequence", "Member[split].WithNamedArgument[separator].ReturnValue"] + - ["Swift.Array", "Swift.Sequence", "Member[split].WithNamedArgument[whereSeparator].ReturnValue"] + - ["Swift.Array", "Swift.Sequence", "Member[suffix].ReturnValue"] + - ["Swift.Array", "Swift.Slice", "Member[regions]"] + - ["Swift.Array", "Swift.String.LocalizationOptions", "Member[replacements]"] + - ["Swift.Array", "Swift.String.Type", "Member[availableStringEncodings]"] + - ["Swift.Array", "Swift.StringProtocol", "Member[cString].ReturnValue"] + - ["Swift.Array", "Swift.StringProtocol", "Member[components].ReturnValue"] + - ["Swift.Array", "Swift.StringProtocol", "Member[linguisticTags].ReturnValue"] + - ["Swift.Array", "Swift._ArrayProtocol", "Member[filter].ReturnValue"] + - ["Swift.Array", "UIKit.NSDiffableDataSourceSectionSnapshot", "Member[expandedItems]"] + - ["Swift.Array", "UIKit.NSDiffableDataSourceSectionSnapshot", "Member[items]"] + - ["Swift.Array", "UIKit.NSDiffableDataSourceSectionSnapshot", "Member[rootItems]"] + - ["Swift.Array", "UIKit.NSDiffableDataSourceSectionSnapshot", "Member[visibleItems]"] + - ["Swift.Array", "UIKit.NSDiffableDataSourceSnapshot", "Member[itemIdentifiers]"] + - ["Swift.Array", "UIKit.NSDiffableDataSourceSnapshot", "Member[itemIdentifiers].WithNamedArgument[inSection].ReturnValue"] + - ["Swift.Array", "UIKit.NSDiffableDataSourceSnapshot", "Member[reconfiguredItemIdentifiers]"] + - ["Swift.Array", "UIKit.NSDiffableDataSourceSnapshot", "Member[reloadedItemIdentifiers]"] + - ["Swift.Array", "UIKit.NSDiffableDataSourceSnapshot", "Member[reloadedSectionIdentifiers]"] + - ["Swift.Array", "UIKit.NSDiffableDataSourceSnapshot", "Member[sectionIdentifiers]"] + - ["Swift.Array", "UIKit.NSDiffableDataSourceTransaction", "Member[sectionTransactions]"] + - ["Swift.Array", "UIKit.UICollectionViewDiffableDataSource", "Member[indexTitles].ReturnValue"] + - ["Swift.Array", "UIKit.UICollectionViewListCell", "Member[accessories]"] + - ["Swift.Array", "UIKit.UIDropSession", "Member[loadObjects].Argument[completion:].Parameter[0]"] + - ["Swift.Array", "UIKit.UIPasteboard", "Member[detectedPatterns].WithNamedArgument[inItemSet].ReturnValue"] + - ["Swift.Array", "UIKit.UIPasteboard", "Member[detectedValues].WithNamedArgument[inItemSet].ReturnValue"] + - ["Swift.Array", "UIKit.UIPasteboard.ChangedMessage", "Member[typesAdded]"] + - ["Swift.Array", "UIKit.UIPasteboard.ChangedMessage", "Member[typesRemoved]"] + - ["Swift.Array", "UIKit.UIPasteboard.DetectedValues", "Member[calendarEvents]"] + - ["Swift.Array", "UIKit.UIPasteboard.DetectedValues", "Member[emailAddresses]"] + - ["Swift.Array", "UIKit.UIPasteboard.DetectedValues", "Member[flightNumbers]"] + - ["Swift.Array", "UIKit.UIPasteboard.DetectedValues", "Member[links]"] + - ["Swift.Array", "UIKit.UIPasteboard.DetectedValues", "Member[moneyAmounts]"] + - ["Swift.Array", "UIKit.UIPasteboard.DetectedValues", "Member[phoneNumbers]"] + - ["Swift.Array", "UIKit.UIPasteboard.DetectedValues", "Member[postalAddresses]"] + - ["Swift.Array", "UIKit.UIPasteboard.DetectedValues", "Member[shipmentTrackingNumbers]"] + - ["Swift.Array", "UIKit.UISlider.TrackConfiguration", "Member[ticks]"] + - ["Swift.Array", "UIKit.UITabSidebarItem", "Member[accessories]"] + - ["Swift.Array", "UIKit.UITableViewDiffableDataSource", "Member[sectionIndexTitles].ReturnValue"] + - ["Swift.Array", "UIKit.UITextFormattingViewController.Configuration", "Member[formattingStyles]"] + - ["Swift.Array", "UIKit.UITextFormattingViewController.FormattingDescriptor", "Member[fonts]"] + - ["Swift.Array", "UIKit.UITextFormattingViewController.FormattingDescriptor", "Member[textColors]"] + - ["Swift.Array", "UIKit.UITextSearchAggregator", "Member[allFoundRanges]"] + - ["Swift.Array", "UIKit.UITextView", "Member[selectedRanges]"] + - ["Swift.Array", "UIKit.UITraitCollection", "Member[changedTraits].ReturnValue"] + - ["Swift.Array", "UIKit.UITraitCollection.Type", "Member[systemTraitsAffectingColorAppearance]"] + - ["Swift.Array", "UIKit.UITraitCollection.Type", "Member[systemTraitsAffectingImageLookup]"] + - ["Swift.Array", "WebKit.WKWebsiteDataStore", "Member[proxyConfigurations]"] + - ["Swift.Array", "WebKit.WebPage.BackForwardList", "Member[backList]"] + - ["Swift.Array", "WebKit.WebPage.BackForwardList", "Member[forwardList]"] + - ["Swift.BidirectionalCollection", "AppleArchive.ArchiveHeader", ""] + - ["Swift.BidirectionalCollection", "AppleArchive.ArchiveHeader.EntryXATBlob", ""] + - ["Swift.BidirectionalCollection", "AppleArchive.ArchiveHeader.FieldKeySet", ""] + - ["Swift.BidirectionalCollection", "AppleArchive.ArchiveHeader._FieldKeys", ""] + - ["Swift.BidirectionalCollection", "AppleArchive.ArchiveHeader._FieldTypes", ""] + - ["Swift.BidirectionalCollection", "Foundation.AttributeScopes.FoundationAttributes.PersonNameComponentAttribute.Component", ""] + - ["Swift.BidirectionalCollection", "Foundation.AttributedString.CharacterView", ""] + - ["Swift.BidirectionalCollection", "Foundation.AttributedString.Runs", ""] + - ["Swift.BidirectionalCollection", "Foundation.AttributedString.Runs.AttributesSlice1", ""] + - ["Swift.BidirectionalCollection", "Foundation.AttributedString.Runs.AttributesSlice2", ""] + - ["Swift.BidirectionalCollection", "Foundation.AttributedString.Runs.AttributesSlice3", ""] + - ["Swift.BidirectionalCollection", "Foundation.AttributedString.Runs.AttributesSlice4", ""] + - ["Swift.BidirectionalCollection", "Foundation.AttributedString.Runs.AttributesSlice5", ""] + - ["Swift.BidirectionalCollection", "Foundation.AttributedString.UTF16View", ""] + - ["Swift.BidirectionalCollection", "Foundation.AttributedString.UTF8View", ""] + - ["Swift.BidirectionalCollection", "Foundation.AttributedString.UnicodeScalarView", ""] + - ["Swift.BidirectionalCollection", "Foundation.Data", ""] + - ["Swift.BidirectionalCollection", "Foundation.DataProtocol", ""] + - ["Swift.BidirectionalCollection", "Foundation.Date.ISO8601FormatStyle.DateSeparator", ""] + - ["Swift.BidirectionalCollection", "Foundation.Date.ISO8601FormatStyle.DateTimeSeparator", ""] + - ["Swift.BidirectionalCollection", "Foundation.Date.ISO8601FormatStyle.TimeSeparator", ""] + - ["Swift.BidirectionalCollection", "Foundation.Date.ISO8601FormatStyle.TimeZoneSeparator", ""] + - ["Swift.BidirectionalCollection", "Foundation.DispatchData", ""] + - ["Swift.BidirectionalCollection", "Foundation.DispatchData.Region", ""] + - ["Swift.BidirectionalCollection", "Foundation.IndexPath", ""] + - ["Swift.BidirectionalCollection", "Foundation.IndexSet", ""] + - ["Swift.BidirectionalCollection", "Foundation.IndexSet.RangeView", ""] + - ["Swift.BidirectionalCollection", "Foundation.Locale.HourCycle", ""] + - ["Swift.BidirectionalCollection", "Foundation.Locale.Weekday", ""] + - ["Swift.BidirectionalCollection", "Foundation.MutableDataProtocol", ""] + - ["Swift.BidirectionalCollection", "Foundation.NSData", ""] + - ["Swift.BidirectionalCollection", "Swift.AnyBidirectionalCollection", ""] + - ["Swift.BidirectionalCollection", "Swift.AnyRandomAccessCollection", ""] + - ["Swift.BidirectionalCollection", "Swift.Array", ""] + - ["Swift.BidirectionalCollection", "Swift.ArraySlice", ""] + - ["Swift.BidirectionalCollection", "Swift.ClosedRange", ""] + - ["Swift.BidirectionalCollection", "Swift.CollectionOfOne", ""] + - ["Swift.BidirectionalCollection", "Swift.ContiguousArray", ""] + - ["Swift.BidirectionalCollection", "Swift.DefaultIndices", ""] + - ["Swift.BidirectionalCollection", "Swift.DiscontiguousSlice", ""] + - ["Swift.BidirectionalCollection", "Swift.EmptyCollection", ""] + - ["Swift.BidirectionalCollection", "Swift.EnumeratedSequence", ""] + - ["Swift.BidirectionalCollection", "Swift.Int.Words", ""] + - ["Swift.BidirectionalCollection", "Swift.Int16.Words", ""] + - ["Swift.BidirectionalCollection", "Swift.Int32.Words", ""] + - ["Swift.BidirectionalCollection", "Swift.Int64.Words", ""] + - ["Swift.BidirectionalCollection", "Swift.Int8.Words", ""] + - ["Swift.BidirectionalCollection", "Swift.KeyValuePairs", ""] + - ["Swift.BidirectionalCollection", "Swift.RandomAccessCollection", ""] + - ["Swift.BidirectionalCollection", "Swift.Range", ""] + - ["Swift.BidirectionalCollection", "Swift.RangeSet.Ranges", ""] + - ["Swift.BidirectionalCollection", "Swift.Repeated", ""] + - ["Swift.BidirectionalCollection", "Swift.ReversedCollection", ""] + - ["Swift.BidirectionalCollection", "Swift.Slice", ""] + - ["Swift.BidirectionalCollection", "Swift.String", ""] + - ["Swift.BidirectionalCollection", "Swift.String.UTF16View", ""] + - ["Swift.BidirectionalCollection", "Swift.String.UTF8View", ""] + - ["Swift.BidirectionalCollection", "Swift.String.UnicodeScalarView", ""] + - ["Swift.BidirectionalCollection", "Swift.StringProtocol", ""] + - ["Swift.BidirectionalCollection", "Swift.Substring", ""] + - ["Swift.BidirectionalCollection", "Swift.Substring.UTF16View", ""] + - ["Swift.BidirectionalCollection", "Swift.Substring.UTF8View", ""] + - ["Swift.BidirectionalCollection", "Swift.Substring.UnicodeScalarView", ""] + - ["Swift.BidirectionalCollection", "Swift.UInt.Words", ""] + - ["Swift.BidirectionalCollection", "Swift.UInt128.Words", ""] + - ["Swift.BidirectionalCollection", "Swift.UInt16.Words", ""] + - ["Swift.BidirectionalCollection", "Swift.UInt32.Words", ""] + - ["Swift.BidirectionalCollection", "Swift.UInt64.Words", ""] + - ["Swift.BidirectionalCollection", "Swift.UInt8.Words", ""] + - ["Swift.BidirectionalCollection", "Swift.Unicode.Scalar.UTF16View", ""] + - ["Swift.BidirectionalCollection", "Swift.Unicode.Scalar.UTF8View", ""] + - ["Swift.BidirectionalCollection", "Swift.UnsafeBufferPointer", ""] + - ["Swift.BidirectionalCollection", "Swift.UnsafeMutableBufferPointer", ""] + - ["Swift.BidirectionalCollection", "Swift.UnsafeMutableRawBufferPointer", ""] + - ["Swift.BidirectionalCollection", "Swift.UnsafeRawBufferPointer", ""] + - ["Swift.BidirectionalCollection", "System.FilePath.ComponentView", ""] + - ["Swift.BidirectionalCollection", "_StringProcessing.AnyRegexOutput", ""] + - ["Swift.BinaryFloatingPoint", "Swift.BinaryFloatingPoint", "Member[binade]"] + - ["Swift.BinaryFloatingPoint", "Swift.Double", ""] + - ["Swift.BinaryFloatingPoint", "Swift.Float", ""] + - ["Swift.BinaryFloatingPoint", "Swift.Float16", ""] + - ["Swift.BinaryInteger", "Foundation.AttributeScopes.FoundationAttributes.DurationFieldAttribute.Field", ""] + - ["Swift.BinaryInteger", "Foundation.AttributeScopes.FoundationAttributes.MeasurementAttribute.Component", ""] + - ["Swift.BinaryInteger", "Foundation.AttributeScopes.FoundationAttributes.NumberFormatAttributes.NumberPartAttribute.NumberPart", ""] + - ["Swift.BinaryInteger", "Foundation.AttributeScopes.FoundationAttributes.NumberFormatAttributes.SymbolAttribute.Symbol", ""] + - ["Swift.BinaryInteger", "Foundation.AttributedString.MarkdownParsingOptions.FailurePolicy", ""] + - ["Swift.BinaryInteger", "Foundation.AttributedString.MarkdownParsingOptions.InterpretedSyntax", ""] + - ["Swift.BinaryInteger", "Foundation.ByteCountFormatStyle.Style", ""] + - ["Swift.BinaryInteger", "Foundation.Calendar.RecurrenceRule.Frequency", ""] + - ["Swift.BinaryInteger", "Foundation.ListFormatStyle.ListType", ""] + - ["Swift.BinaryInteger", "Foundation.ListFormatStyle.Width", ""] + - ["Swift.BinaryInteger", "Foundation.Morphology.Definiteness", ""] + - ["Swift.BinaryInteger", "Foundation.Morphology.Determination", ""] + - ["Swift.BinaryInteger", "Foundation.Morphology.GrammaticalCase", ""] + - ["Swift.BinaryInteger", "Foundation.Morphology.GrammaticalGender", ""] + - ["Swift.BinaryInteger", "Foundation.Morphology.GrammaticalNumber", ""] + - ["Swift.BinaryInteger", "Foundation.Morphology.GrammaticalPerson", ""] + - ["Swift.BinaryInteger", "Foundation.Morphology.PartOfSpeech", ""] + - ["Swift.BinaryInteger", "Foundation.Morphology.PronounType", ""] + - ["Swift.BinaryInteger", "Foundation.PersonNameComponents.FormatStyle.Style", ""] + - ["Swift.BinaryInteger", "Foundation.PresentationIntent.TableColumn.Alignment", ""] + - ["Swift.BinaryInteger", "Foundation.URL.FormatStyle.Component", ""] + - ["Swift.BinaryInteger", "Foundation.URLError.BackgroundTaskCancelledReason", ""] + - ["Swift.BinaryInteger", "Foundation.URLError.NetworkUnavailableReason", ""] + - ["Swift.BinaryInteger", "Network.IPv6Address.Scope", ""] + - ["Swift.BinaryInteger", "Network.NWProtocolWebSocket.CloseCode.Defined", ""] + - ["Swift.BinaryInteger", "Network.NWProtocolWebSocket.Opcode", ""] + - ["Swift.BinaryInteger", "Network.NetworkFixedWidthInteger", ""] + - ["Swift.BinaryInteger", "Swift.FixedWidthInteger", ""] + - ["Swift.BinaryInteger", "Swift.FloatingPointSign", ""] + - ["Swift.BinaryInteger", "Swift.Int", ""] + - ["Swift.BinaryInteger", "Swift.Int128", ""] + - ["Swift.BinaryInteger", "Swift.Int16", ""] + - ["Swift.BinaryInteger", "Swift.Int32", ""] + - ["Swift.BinaryInteger", "Swift.Int64", ""] + - ["Swift.BinaryInteger", "Swift.Int8", ""] + - ["Swift.BinaryInteger", "Swift.SignedInteger", ""] + - ["Swift.BinaryInteger", "Swift.UInt", ""] + - ["Swift.BinaryInteger", "Swift.UInt128", ""] + - ["Swift.BinaryInteger", "Swift.UInt16", ""] + - ["Swift.BinaryInteger", "Swift.UInt32", ""] + - ["Swift.BinaryInteger", "Swift.UInt64", ""] + - ["Swift.BinaryInteger", "Swift.UInt8", ""] + - ["Swift.BinaryInteger", "Swift.UnsignedInteger", ""] + - ["Swift.Collection", "AppleArchive.ArchiveHeader", ""] + - ["Swift.Collection", "AppleArchive.ArchiveHeader.EntryXATBlob", ""] + - ["Swift.Collection", "AppleArchive.ArchiveHeader.FieldKeySet", ""] + - ["Swift.Collection", "AppleArchive.ArchiveHeader._FieldKeys", ""] + - ["Swift.Collection", "AppleArchive.ArchiveHeader._FieldTypes", ""] + - ["Swift.Collection", "Foundation.AttributeScopes.FoundationAttributes.PersonNameComponentAttribute.Component", ""] + - ["Swift.Collection", "Foundation.AttributedString.CharacterView", ""] + - ["Swift.Collection", "Foundation.AttributedString.Runs", ""] + - ["Swift.Collection", "Foundation.AttributedString.Runs.AttributesSlice1", ""] + - ["Swift.Collection", "Foundation.AttributedString.Runs.AttributesSlice2", ""] + - ["Swift.Collection", "Foundation.AttributedString.Runs.AttributesSlice3", ""] + - ["Swift.Collection", "Foundation.AttributedString.Runs.AttributesSlice4", ""] + - ["Swift.Collection", "Foundation.AttributedString.Runs.AttributesSlice5", ""] + - ["Swift.Collection", "Foundation.AttributedString.UTF16View", ""] + - ["Swift.Collection", "Foundation.AttributedString.UTF8View", ""] + - ["Swift.Collection", "Foundation.AttributedString.UnicodeScalarView", ""] + - ["Swift.Collection", "Foundation.Data", ""] + - ["Swift.Collection", "Foundation.DataProtocol", ""] + - ["Swift.Collection", "Foundation.Date.ISO8601FormatStyle.DateSeparator", ""] + - ["Swift.Collection", "Foundation.Date.ISO8601FormatStyle.DateTimeSeparator", ""] + - ["Swift.Collection", "Foundation.Date.ISO8601FormatStyle.TimeSeparator", ""] + - ["Swift.Collection", "Foundation.Date.ISO8601FormatStyle.TimeZoneSeparator", ""] + - ["Swift.Collection", "Foundation.DispatchData", ""] + - ["Swift.Collection", "Foundation.DispatchData.Region", ""] + - ["Swift.Collection", "Foundation.IndexPath", ""] + - ["Swift.Collection", "Foundation.IndexSet", ""] + - ["Swift.Collection", "Foundation.IndexSet.RangeView", ""] + - ["Swift.Collection", "Foundation.Locale.HourCycle", ""] + - ["Swift.Collection", "Foundation.Locale.Weekday", ""] + - ["Swift.Collection", "Foundation.MutableDataProtocol", ""] + - ["Swift.Collection", "Foundation.NSData", ""] + - ["Swift.Collection", "Network.NWTXTRecord", ""] + - ["Swift.Collection", "Swift.AnyBidirectionalCollection", ""] + - ["Swift.Collection", "Swift.AnyCollection", ""] + - ["Swift.Collection", "Swift.AnyRandomAccessCollection", ""] + - ["Swift.Collection", "Swift.Array", ""] + - ["Swift.Collection", "Swift.ArraySlice", ""] + - ["Swift.Collection", "Swift.BidirectionalCollection", ""] + - ["Swift.Collection", "Swift.ClosedRange", ""] + - ["Swift.Collection", "Swift.CollectionDifference", ""] + - ["Swift.Collection", "Swift.CollectionOfOne", ""] + - ["Swift.Collection", "Swift.ContiguousArray", ""] + - ["Swift.Collection", "Swift.DefaultIndices", ""] + - ["Swift.Collection", "Swift.Dictionary", ""] + - ["Swift.Collection", "Swift.Dictionary.Keys", ""] + - ["Swift.Collection", "Swift.Dictionary.Values", ""] + - ["Swift.Collection", "Swift.DiscontiguousSlice", ""] + - ["Swift.Collection", "Swift.EmptyCollection", ""] + - ["Swift.Collection", "Swift.EnumeratedSequence", ""] + - ["Swift.Collection", "Swift.Int.Words", ""] + - ["Swift.Collection", "Swift.Int16.Words", ""] + - ["Swift.Collection", "Swift.Int32.Words", ""] + - ["Swift.Collection", "Swift.Int64.Words", ""] + - ["Swift.Collection", "Swift.Int8.Words", ""] + - ["Swift.Collection", "Swift.KeyValuePairs", ""] + - ["Swift.Collection", "Swift.MutableCollection", ""] + - ["Swift.Collection", "Swift.RandomAccessCollection", ""] + - ["Swift.Collection", "Swift.Range", ""] + - ["Swift.Collection", "Swift.RangeReplaceableCollection", ""] + - ["Swift.Collection", "Swift.RangeSet.Ranges", ""] + - ["Swift.Collection", "Swift.Repeated", ""] + - ["Swift.Collection", "Swift.ReversedCollection", ""] + - ["Swift.Collection", "Swift.Set", ""] + - ["Swift.Collection", "Swift.Slice", ""] + - ["Swift.Collection", "Swift.String", ""] + - ["Swift.Collection", "Swift.String.UTF16View", ""] + - ["Swift.Collection", "Swift.String.UTF8View", ""] + - ["Swift.Collection", "Swift.String.UnicodeScalarView", ""] + - ["Swift.Collection", "Swift.StringProtocol", ""] + - ["Swift.Collection", "Swift.Substring", ""] + - ["Swift.Collection", "Swift.Substring.UTF16View", ""] + - ["Swift.Collection", "Swift.Substring.UTF8View", ""] + - ["Swift.Collection", "Swift.Substring.UnicodeScalarView", ""] + - ["Swift.Collection", "Swift.UInt.Words", ""] + - ["Swift.Collection", "Swift.UInt128.Words", ""] + - ["Swift.Collection", "Swift.UInt16.Words", ""] + - ["Swift.Collection", "Swift.UInt32.Words", ""] + - ["Swift.Collection", "Swift.UInt64.Words", ""] + - ["Swift.Collection", "Swift.UInt8.Words", ""] + - ["Swift.Collection", "Swift.Unicode.Scalar.UTF16View", ""] + - ["Swift.Collection", "Swift.Unicode.Scalar.UTF8View", ""] + - ["Swift.Collection", "Swift.UnsafeBufferPointer", ""] + - ["Swift.Collection", "Swift.UnsafeMutableBufferPointer", ""] + - ["Swift.Collection", "Swift.UnsafeMutableRawBufferPointer", ""] + - ["Swift.Collection", "Swift.UnsafeRawBufferPointer", ""] + - ["Swift.Collection", "Swift._AnyCollectionProtocol", ""] + - ["Swift.Collection", "Swift._ArrayProtocol", ""] + - ["Swift.Collection", "System.FilePath.ComponentView", ""] + - ["Swift.Collection", "_StringProcessing.AnyRegexOutput", ""] + - ["Swift.ContiguousArray", "Swift.String", "Member[utf8CString]"] + - ["Swift.Dictionary", "Foundation.CustomNSError", "Member[errorUserInfo]"] + - ["Swift.Dictionary", "Foundation.JSONDecoder", "Member[userInfo]"] + - ["Swift.Dictionary", "Foundation.JSONEncoder", "Member[userInfo]"] + - ["Swift.Dictionary", "Foundation.Locale.Type", "Member[components].ReturnValue"] + - ["Swift.Dictionary", "Foundation.NSCoder", "Member[decodeDictionary].WithNamedArgument[objectClass].ReturnValue"] + - ["Swift.Dictionary", "Foundation.NSCoder", "Member[decodeDictionary].WithNamedArgument[objectsOfClasses].ReturnValue"] + - ["Swift.Dictionary", "Foundation.NSKeyedUnarchiver.Type", "Member[unarchivedDictionary].WithNamedArgument[keysOfClasses].ReturnValue"] + - ["Swift.Dictionary", "Foundation.NSKeyedUnarchiver.Type", "Member[unarchivedDictionary].WithNamedArgument[objectClass].ReturnValue"] + - ["Swift.Dictionary", "Foundation.Notification", "Member[userInfo]"] + - ["Swift.Dictionary", "Foundation.PredicateCodableKeyPathProviding.Type", "Member[predicateCodableKeyPaths]"] + - ["Swift.Dictionary", "Foundation.PropertyListDecoder", "Member[userInfo]"] + - ["Swift.Dictionary", "Foundation.PropertyListEncoder", "Member[userInfo]"] + - ["Swift.Dictionary", "Foundation.TimeZone.Type", "Member[abbreviationDictionary]"] + - ["Swift.Dictionary", "Foundation.URLRequest", "Member[allHTTPHeaderFields]"] + - ["Swift.Dictionary", "Foundation.URLResourceValues", "Member[allValues]"] + - ["Swift.Dictionary", "Foundation.URLResourceValues", "Member[quarantineProperties]"] + - ["Swift.Dictionary", "Foundation.URLResourceValues", "Member[thumbnailDictionary]"] + - ["Swift.Dictionary", "Foundation._BridgedStoredNSError", "Member[errorUserInfo]"] + - ["Swift.Dictionary", "Foundation._BridgedStoredNSError", "Member[userInfo]"] + - ["Swift.Dictionary", "Network.NWError", "Member[errorUserInfo]"] + - ["Swift.Dictionary", "Network.NWTXTRecord", "Member[dataDictionary]"] + - ["Swift.Dictionary", "Network.NWTXTRecord", "Member[dictionary]"] + - ["Swift.Dictionary", "Network.NWTXTRecord", "Member[entries]"] + - ["Swift.Dictionary", "Swift.Dictionary", "Member[compactMapValues].ReturnValue"] + - ["Swift.Dictionary", "Swift.Dictionary", "Member[filter].ReturnValue"] + - ["Swift.Dictionary", "Swift.Dictionary", "Member[mapValues].ReturnValue"] + - ["Swift.Dictionary", "Swift.Dictionary", "Member[merging].ReturnValue"] + - ["Swift.Dictionary", "Swift.StringProtocol", "Member[propertyListFromStringsFileFormat].ReturnValue"] + - ["Swift.Dictionary", "WebKit.WebPage.Configuration", "Member[urlSchemeHandlers]"] + - ["Swift.Dictionary", "WebKit.WebPage.FormInfo", "Member[formValues]"] + - ["Swift.FixedWidthInteger", "Foundation.AttributeScopes.FoundationAttributes.DurationFieldAttribute.Field", ""] + - ["Swift.FixedWidthInteger", "Foundation.AttributeScopes.FoundationAttributes.MeasurementAttribute.Component", ""] + - ["Swift.FixedWidthInteger", "Foundation.AttributeScopes.FoundationAttributes.NumberFormatAttributes.NumberPartAttribute.NumberPart", ""] + - ["Swift.FixedWidthInteger", "Foundation.AttributeScopes.FoundationAttributes.NumberFormatAttributes.SymbolAttribute.Symbol", ""] + - ["Swift.FixedWidthInteger", "Foundation.AttributedString.MarkdownParsingOptions.FailurePolicy", ""] + - ["Swift.FixedWidthInteger", "Foundation.AttributedString.MarkdownParsingOptions.InterpretedSyntax", ""] + - ["Swift.FixedWidthInteger", "Foundation.ByteCountFormatStyle.Style", ""] + - ["Swift.FixedWidthInteger", "Foundation.Calendar.RecurrenceRule.Frequency", ""] + - ["Swift.FixedWidthInteger", "Foundation.ListFormatStyle.ListType", ""] + - ["Swift.FixedWidthInteger", "Foundation.ListFormatStyle.Width", ""] + - ["Swift.FixedWidthInteger", "Foundation.Morphology.Definiteness", ""] + - ["Swift.FixedWidthInteger", "Foundation.Morphology.Determination", ""] + - ["Swift.FixedWidthInteger", "Foundation.Morphology.GrammaticalCase", ""] + - ["Swift.FixedWidthInteger", "Foundation.Morphology.GrammaticalGender", ""] + - ["Swift.FixedWidthInteger", "Foundation.Morphology.GrammaticalNumber", ""] + - ["Swift.FixedWidthInteger", "Foundation.Morphology.GrammaticalPerson", ""] + - ["Swift.FixedWidthInteger", "Foundation.Morphology.PartOfSpeech", ""] + - ["Swift.FixedWidthInteger", "Foundation.Morphology.PronounType", ""] + - ["Swift.FixedWidthInteger", "Foundation.PersonNameComponents.FormatStyle.Style", ""] + - ["Swift.FixedWidthInteger", "Foundation.PresentationIntent.TableColumn.Alignment", ""] + - ["Swift.FixedWidthInteger", "Foundation.URL.FormatStyle.Component", ""] + - ["Swift.FixedWidthInteger", "Foundation.URLError.BackgroundTaskCancelledReason", ""] + - ["Swift.FixedWidthInteger", "Foundation.URLError.NetworkUnavailableReason", ""] + - ["Swift.FixedWidthInteger", "Network.IPv6Address.Scope", ""] + - ["Swift.FixedWidthInteger", "Network.NWProtocolWebSocket.CloseCode.Defined", ""] + - ["Swift.FixedWidthInteger", "Network.NWProtocolWebSocket.Opcode", ""] + - ["Swift.FixedWidthInteger", "Network.NetworkFixedWidthInteger", ""] + - ["Swift.FixedWidthInteger", "Swift.FixedWidthInteger", "Member[bigEndian]"] + - ["Swift.FixedWidthInteger", "Swift.FixedWidthInteger", "Member[byteSwapped]"] + - ["Swift.FixedWidthInteger", "Swift.FixedWidthInteger", "Member[littleEndian]"] + - ["Swift.FixedWidthInteger", "Swift.FixedWidthInteger.Type", "Member[max]"] + - ["Swift.FixedWidthInteger", "Swift.FixedWidthInteger.Type", "Member[min]"] + - ["Swift.FixedWidthInteger", "Swift.FloatingPointSign", ""] + - ["Swift.FixedWidthInteger", "Swift.Int", ""] + - ["Swift.FixedWidthInteger", "Swift.Int128", ""] + - ["Swift.FixedWidthInteger", "Swift.Int16", ""] + - ["Swift.FixedWidthInteger", "Swift.Int32", ""] + - ["Swift.FixedWidthInteger", "Swift.Int64", ""] + - ["Swift.FixedWidthInteger", "Swift.Int8", ""] + - ["Swift.FixedWidthInteger", "Swift.UInt", ""] + - ["Swift.FixedWidthInteger", "Swift.UInt128", ""] + - ["Swift.FixedWidthInteger", "Swift.UInt16", ""] + - ["Swift.FixedWidthInteger", "Swift.UInt32", ""] + - ["Swift.FixedWidthInteger", "Swift.UInt64", ""] + - ["Swift.FixedWidthInteger", "Swift.UInt8", ""] + - ["Swift.FloatingPoint", "Swift.BinaryFloatingPoint", ""] + - ["Swift.FloatingPoint", "Swift.Double", ""] + - ["Swift.FloatingPoint", "Swift.Float", ""] + - ["Swift.FloatingPoint", "Swift.Float16", ""] + - ["Swift.FloatingPoint", "Swift.FloatingPoint", "Member[nextDown]"] + - ["Swift.FloatingPoint", "Swift.FloatingPoint", "Member[nextUp]"] + - ["Swift.FloatingPoint", "Swift.FloatingPoint", "Member[significand]"] + - ["Swift.FloatingPoint", "Swift.FloatingPoint", "Member[ulp]"] + - ["Swift.FloatingPoint", "Swift.FloatingPoint.Type", "Member[greatestFiniteMagnitude]"] + - ["Swift.FloatingPoint", "Swift.FloatingPoint.Type", "Member[infinity]"] + - ["Swift.FloatingPoint", "Swift.FloatingPoint.Type", "Member[leastNonzeroMagnitude]"] + - ["Swift.FloatingPoint", "Swift.FloatingPoint.Type", "Member[leastNormalMagnitude]"] + - ["Swift.FloatingPoint", "Swift.FloatingPoint.Type", "Member[nan]"] + - ["Swift.FloatingPoint", "Swift.FloatingPoint.Type", "Member[pi]"] + - ["Swift.FloatingPoint", "Swift.FloatingPoint.Type", "Member[signalingNaN]"] + - ["Swift.FloatingPoint", "Swift.FloatingPoint.Type", "Member[ulpOfOne]"] + - ["Swift.IteratorProtocol", "Foundation.AttributedString.Runs.AttributesSlice1.Iterator", ""] + - ["Swift.IteratorProtocol", "Foundation.AttributedString.Runs.AttributesSlice2.Iterator", ""] + - ["Swift.IteratorProtocol", "Foundation.AttributedString.Runs.AttributesSlice3.Iterator", ""] + - ["Swift.IteratorProtocol", "Foundation.AttributedString.Runs.AttributesSlice4.Iterator", ""] + - ["Swift.IteratorProtocol", "Foundation.AttributedString.Runs.AttributesSlice5.Iterator", ""] + - ["Swift.IteratorProtocol", "Foundation.Data.Iterator", ""] + - ["Swift.IteratorProtocol", "Foundation.NSDictionary.Iterator", ""] + - ["Swift.IteratorProtocol", "Foundation.NSFastEnumerationIterator", ""] + - ["Swift.IteratorProtocol", "Foundation.NSIndexSetIterator", ""] + - ["Swift.IteratorProtocol", "Swift.AnyIterator", ""] + - ["Swift.IteratorProtocol", "Swift.CollectionOfOne.Iterator", ""] + - ["Swift.IteratorProtocol", "Swift.Dictionary.Iterator", ""] + - ["Swift.IteratorProtocol", "Swift.Dictionary.Keys.Iterator", ""] + - ["Swift.IteratorProtocol", "Swift.Dictionary.Values.Iterator", ""] + - ["Swift.IteratorProtocol", "Swift.DropWhileSequence.Iterator", ""] + - ["Swift.IteratorProtocol", "Swift.EmptyCollection.Iterator", ""] + - ["Swift.IteratorProtocol", "Swift.EnumeratedSequence.Iterator", ""] + - ["Swift.IteratorProtocol", "Swift.FlattenSequence.Iterator", ""] + - ["Swift.IteratorProtocol", "Swift.IndexingIterator", ""] + - ["Swift.IteratorProtocol", "Swift.IteratorSequence", ""] + - ["Swift.IteratorProtocol", "Swift.JoinedSequence.Iterator", ""] + - ["Swift.IteratorProtocol", "Swift.LazyDropWhileSequence.Iterator", ""] + - ["Swift.IteratorProtocol", "Swift.LazyFilterSequence.Iterator", ""] + - ["Swift.IteratorProtocol", "Swift.LazyMapSequence.Iterator", ""] + - ["Swift.IteratorProtocol", "Swift.LazyPrefixWhileSequence.Iterator", ""] + - ["Swift.IteratorProtocol", "Swift.PartialRangeFrom.Iterator", ""] + - ["Swift.IteratorProtocol", "Swift.PrefixSequence.Iterator", ""] + - ["Swift.IteratorProtocol", "Swift.ReversedCollection.Iterator", ""] + - ["Swift.IteratorProtocol", "Swift.Set.Iterator", ""] + - ["Swift.IteratorProtocol", "Swift.StrideThroughIterator", ""] + - ["Swift.IteratorProtocol", "Swift.StrideToIterator", ""] + - ["Swift.IteratorProtocol", "Swift.String.Iterator", ""] + - ["Swift.IteratorProtocol", "Swift.String.UTF16View.Iterator", ""] + - ["Swift.IteratorProtocol", "Swift.String.UnicodeScalarView.Iterator", ""] + - ["Swift.IteratorProtocol", "Swift.UnfoldSequence", ""] + - ["Swift.IteratorProtocol", "Swift.UnsafeBufferPointer.Iterator", ""] + - ["Swift.IteratorProtocol", "Swift.UnsafeRawBufferPointer.Iterator", ""] + - ["Swift.IteratorProtocol", "Swift.Zip2Sequence.Iterator", ""] + - ["Swift.IteratorProtocol", "Swift._NativeDictionary.Iterator", ""] + - ["Swift.IteratorProtocol", "Swift._NativeSet.Iterator", ""] + - ["Swift.IteratorProtocol", "Swift._UnsafeBitset.Word", ""] + - ["Swift.MutableCollection", "AppleArchive.ArchiveHeader", ""] + - ["Swift.MutableCollection", "AppleArchive.ArchiveHeader.EntryXATBlob", ""] + - ["Swift.MutableCollection", "Foundation.Data", ""] + - ["Swift.MutableCollection", "Foundation.IndexPath", ""] + - ["Swift.MutableCollection", "Foundation.MutableDataProtocol", ""] + - ["Swift.MutableCollection", "Swift.Array", ""] + - ["Swift.MutableCollection", "Swift.ArraySlice", ""] + - ["Swift.MutableCollection", "Swift.CollectionOfOne", ""] + - ["Swift.MutableCollection", "Swift.ContiguousArray", ""] + - ["Swift.MutableCollection", "Swift.Dictionary.Values", ""] + - ["Swift.MutableCollection", "Swift.EmptyCollection", ""] + - ["Swift.MutableCollection", "Swift.Slice", ""] + - ["Swift.MutableCollection", "Swift.UnsafeMutableBufferPointer", ""] + - ["Swift.MutableCollection", "Swift.UnsafeMutableRawBufferPointer", ""] + - ["Swift.RangeReplaceableCollection", "Foundation.AttributeScopes.FoundationAttributes.PersonNameComponentAttribute.Component", ""] + - ["Swift.RangeReplaceableCollection", "Foundation.AttributedString.CharacterView", ""] + - ["Swift.RangeReplaceableCollection", "Foundation.AttributedString.UnicodeScalarView", ""] + - ["Swift.RangeReplaceableCollection", "Foundation.Data", ""] + - ["Swift.RangeReplaceableCollection", "Foundation.Date.ISO8601FormatStyle.DateSeparator", ""] + - ["Swift.RangeReplaceableCollection", "Foundation.Date.ISO8601FormatStyle.DateTimeSeparator", ""] + - ["Swift.RangeReplaceableCollection", "Foundation.Date.ISO8601FormatStyle.TimeSeparator", ""] + - ["Swift.RangeReplaceableCollection", "Foundation.Date.ISO8601FormatStyle.TimeZoneSeparator", ""] + - ["Swift.RangeReplaceableCollection", "Foundation.Locale.HourCycle", ""] + - ["Swift.RangeReplaceableCollection", "Foundation.Locale.Weekday", ""] + - ["Swift.RangeReplaceableCollection", "Foundation.MutableDataProtocol", ""] + - ["Swift.RangeReplaceableCollection", "Swift.Array", ""] + - ["Swift.RangeReplaceableCollection", "Swift.ArraySlice", ""] + - ["Swift.RangeReplaceableCollection", "Swift.ContiguousArray", ""] + - ["Swift.RangeReplaceableCollection", "Swift.Slice", ""] + - ["Swift.RangeReplaceableCollection", "Swift.String", ""] + - ["Swift.RangeReplaceableCollection", "Swift.String.UnicodeScalarView", ""] + - ["Swift.RangeReplaceableCollection", "Swift.Substring", ""] + - ["Swift.RangeReplaceableCollection", "Swift.Substring.UnicodeScalarView", ""] + - ["Swift.RangeReplaceableCollection", "Swift._ArrayProtocol", ""] + - ["Swift.RangeReplaceableCollection", "System.FilePath.ComponentView", ""] + - ["Swift.Sequence", "AppleArchive.ArchiveHeader", ""] + - ["Swift.Sequence", "AppleArchive.ArchiveHeader.EntryXATBlob", ""] + - ["Swift.Sequence", "AppleArchive.ArchiveHeader.FieldKeySet", ""] + - ["Swift.Sequence", "AppleArchive.ArchiveHeader._FieldKeys", ""] + - ["Swift.Sequence", "AppleArchive.ArchiveHeader._FieldTypes", ""] + - ["Swift.Sequence", "CryptoKit.AES.GCM.Nonce", ""] + - ["Swift.Sequence", "CryptoKit.ChaChaPoly.Nonce", ""] + - ["Swift.Sequence", "CryptoKit.Digest", ""] + - ["Swift.Sequence", "CryptoKit.HashedAuthenticationCode", ""] + - ["Swift.Sequence", "CryptoKit.Insecure.MD5Digest", ""] + - ["Swift.Sequence", "CryptoKit.Insecure.SHA1Digest", ""] + - ["Swift.Sequence", "CryptoKit.MessageAuthenticationCode", ""] + - ["Swift.Sequence", "CryptoKit.SHA256Digest", ""] + - ["Swift.Sequence", "CryptoKit.SHA384Digest", ""] + - ["Swift.Sequence", "CryptoKit.SHA3_256Digest", ""] + - ["Swift.Sequence", "CryptoKit.SHA3_384Digest", ""] + - ["Swift.Sequence", "CryptoKit.SHA3_512Digest", ""] + - ["Swift.Sequence", "CryptoKit.SHA512Digest", ""] + - ["Swift.Sequence", "Foundation.AttributeScopes.FoundationAttributes.PersonNameComponentAttribute.Component", ""] + - ["Swift.Sequence", "Foundation.AttributedString.CharacterView", ""] + - ["Swift.Sequence", "Foundation.AttributedString.Runs", ""] + - ["Swift.Sequence", "Foundation.AttributedString.Runs.AttributesSlice1", ""] + - ["Swift.Sequence", "Foundation.AttributedString.Runs.AttributesSlice2", ""] + - ["Swift.Sequence", "Foundation.AttributedString.Runs.AttributesSlice3", ""] + - ["Swift.Sequence", "Foundation.AttributedString.Runs.AttributesSlice4", ""] + - ["Swift.Sequence", "Foundation.AttributedString.Runs.AttributesSlice5", ""] + - ["Swift.Sequence", "Foundation.AttributedString.UTF16View", ""] + - ["Swift.Sequence", "Foundation.AttributedString.UTF8View", ""] + - ["Swift.Sequence", "Foundation.AttributedString.UnicodeScalarView", ""] + - ["Swift.Sequence", "Foundation.Data", ""] + - ["Swift.Sequence", "Foundation.DataProtocol", ""] + - ["Swift.Sequence", "Foundation.Date.ISO8601FormatStyle.DateSeparator", ""] + - ["Swift.Sequence", "Foundation.Date.ISO8601FormatStyle.DateTimeSeparator", ""] + - ["Swift.Sequence", "Foundation.Date.ISO8601FormatStyle.TimeSeparator", ""] + - ["Swift.Sequence", "Foundation.Date.ISO8601FormatStyle.TimeZoneSeparator", ""] + - ["Swift.Sequence", "Foundation.DispatchData", ""] + - ["Swift.Sequence", "Foundation.DispatchData.Region", ""] + - ["Swift.Sequence", "Foundation.IndexPath", ""] + - ["Swift.Sequence", "Foundation.IndexSet", ""] + - ["Swift.Sequence", "Foundation.IndexSet.RangeView", ""] + - ["Swift.Sequence", "Foundation.Locale.HourCycle", ""] + - ["Swift.Sequence", "Foundation.Locale.Weekday", ""] + - ["Swift.Sequence", "Foundation.MutableDataProtocol", ""] + - ["Swift.Sequence", "Foundation.NSArray", ""] + - ["Swift.Sequence", "Foundation.NSData", ""] + - ["Swift.Sequence", "Foundation.NSDictionary", ""] + - ["Swift.Sequence", "Foundation.NSEnumerator", ""] + - ["Swift.Sequence", "Foundation.NSIndexSet", ""] + - ["Swift.Sequence", "Foundation.NSOrderedSet", ""] + - ["Swift.Sequence", "Foundation.NSSet", ""] + - ["Swift.Sequence", "Network.NWTXTRecord", ""] + - ["Swift.Sequence", "Swift.AnyBidirectionalCollection", ""] + - ["Swift.Sequence", "Swift.AnyCollection", ""] + - ["Swift.Sequence", "Swift.AnyIterator", ""] + - ["Swift.Sequence", "Swift.AnyRandomAccessCollection", ""] + - ["Swift.Sequence", "Swift.AnySequence", ""] + - ["Swift.Sequence", "Swift.Array", ""] + - ["Swift.Sequence", "Swift.ArraySlice", ""] + - ["Swift.Sequence", "Swift.BidirectionalCollection", ""] + - ["Swift.Sequence", "Swift.ClosedRange", ""] + - ["Swift.Sequence", "Swift.Collection", ""] + - ["Swift.Sequence", "Swift.CollectionDifference", ""] + - ["Swift.Sequence", "Swift.CollectionOfOne", ""] + - ["Swift.Sequence", "Swift.ContiguousArray", ""] + - ["Swift.Sequence", "Swift.DefaultIndices", ""] + - ["Swift.Sequence", "Swift.Dictionary", ""] + - ["Swift.Sequence", "Swift.Dictionary.Keys", ""] + - ["Swift.Sequence", "Swift.Dictionary.Values", ""] + - ["Swift.Sequence", "Swift.DiscontiguousSlice", ""] + - ["Swift.Sequence", "Swift.DropFirstSequence", ""] + - ["Swift.Sequence", "Swift.DropWhileSequence", ""] + - ["Swift.Sequence", "Swift.EmptyCollection", ""] + - ["Swift.Sequence", "Swift.EmptyCollection.Iterator", ""] + - ["Swift.Sequence", "Swift.EnumeratedSequence", ""] + - ["Swift.Sequence", "Swift.EnumeratedSequence.Iterator", ""] + - ["Swift.Sequence", "Swift.FlattenSequence", ""] + - ["Swift.Sequence", "Swift.FlattenSequence.Iterator", ""] + - ["Swift.Sequence", "Swift.IndexingIterator", ""] + - ["Swift.Sequence", "Swift.Int.Words", ""] + - ["Swift.Sequence", "Swift.Int16.Words", ""] + - ["Swift.Sequence", "Swift.Int32.Words", ""] + - ["Swift.Sequence", "Swift.Int64.Words", ""] + - ["Swift.Sequence", "Swift.Int8.Words", ""] + - ["Swift.Sequence", "Swift.IteratorSequence", ""] + - ["Swift.Sequence", "Swift.JoinedSequence", ""] + - ["Swift.Sequence", "Swift.KeyValuePairs", ""] + - ["Swift.Sequence", "Swift.LazyDropWhileSequence", ""] + - ["Swift.Sequence", "Swift.LazyFilterSequence", ""] + - ["Swift.Sequence", "Swift.LazyFilterSequence.Iterator", ""] + - ["Swift.Sequence", "Swift.LazyMapSequence", ""] + - ["Swift.Sequence", "Swift.LazyMapSequence.Iterator", ""] + - ["Swift.Sequence", "Swift.LazyPrefixWhileSequence", ""] + - ["Swift.Sequence", "Swift.LazyPrefixWhileSequence.Iterator", ""] + - ["Swift.Sequence", "Swift.LazySequence", ""] + - ["Swift.Sequence", "Swift.LazySequenceProtocol", ""] + - ["Swift.Sequence", "Swift.MutableCollection", ""] + - ["Swift.Sequence", "Swift.PartialRangeFrom", ""] + - ["Swift.Sequence", "Swift.PrefixSequence", ""] + - ["Swift.Sequence", "Swift.RandomAccessCollection", ""] + - ["Swift.Sequence", "Swift.Range", ""] + - ["Swift.Sequence", "Swift.RangeReplaceableCollection", ""] + - ["Swift.Sequence", "Swift.RangeSet.Ranges", ""] + - ["Swift.Sequence", "Swift.Repeated", ""] + - ["Swift.Sequence", "Swift.ReversedCollection", ""] + - ["Swift.Sequence", "Swift.ReversedCollection.Iterator", ""] + - ["Swift.Sequence", "Swift.Set", ""] + - ["Swift.Sequence", "Swift.Slice", ""] + - ["Swift.Sequence", "Swift.StrideThrough", ""] + - ["Swift.Sequence", "Swift.StrideTo", ""] + - ["Swift.Sequence", "Swift.String", ""] + - ["Swift.Sequence", "Swift.String.UTF16View", ""] + - ["Swift.Sequence", "Swift.String.UTF8View", ""] + - ["Swift.Sequence", "Swift.String.UnicodeScalarView", ""] + - ["Swift.Sequence", "Swift.StringProtocol", ""] + - ["Swift.Sequence", "Swift.Substring", ""] + - ["Swift.Sequence", "Swift.Substring.UTF16View", ""] + - ["Swift.Sequence", "Swift.Substring.UTF8View", ""] + - ["Swift.Sequence", "Swift.Substring.UnicodeScalarView", ""] + - ["Swift.Sequence", "Swift.UInt.Words", ""] + - ["Swift.Sequence", "Swift.UInt128.Words", ""] + - ["Swift.Sequence", "Swift.UInt16.Words", ""] + - ["Swift.Sequence", "Swift.UInt32.Words", ""] + - ["Swift.Sequence", "Swift.UInt64.Words", ""] + - ["Swift.Sequence", "Swift.UInt8.Words", ""] + - ["Swift.Sequence", "Swift.UnfoldSequence", ""] + - ["Swift.Sequence", "Swift.Unicode.Scalar.UTF16View", ""] + - ["Swift.Sequence", "Swift.Unicode.Scalar.UTF8View", ""] + - ["Swift.Sequence", "Swift.UnsafeBufferPointer", ""] + - ["Swift.Sequence", "Swift.UnsafeMutableBufferPointer", ""] + - ["Swift.Sequence", "Swift.UnsafeMutableRawBufferPointer", ""] + - ["Swift.Sequence", "Swift.UnsafeRawBufferPointer", ""] + - ["Swift.Sequence", "Swift.UnsafeRawBufferPointer.Iterator", ""] + - ["Swift.Sequence", "Swift.Zip2Sequence", ""] + - ["Swift.Sequence", "Swift._AnyCollectionProtocol", ""] + - ["Swift.Sequence", "Swift._ArrayProtocol", ""] + - ["Swift.Sequence", "Swift._UnsafeBitset.Word", ""] + - ["Swift.Sequence", "System.FilePath.ComponentView", ""] + - ["Swift.Sequence", "_StringProcessing.AnyRegexOutput", ""] + - ["Swift.Set", "Foundation.AttributedStringKey.Type", "Member[invalidationConditions]"] + - ["Swift.Set", "Foundation.Date.AnchoredRelativeFormatStyle", "Member[allowedFields]"] + - ["Swift.Set", "Foundation.Date.ComponentsFormatStyle", "Member[fields]"] + - ["Swift.Set", "Foundation.Date.RelativeFormatStyle", "Member[allowedFields]"] + - ["Swift.Set", "Foundation.NSKeyValueObservingCustomization.Type", "Member[keyPathsAffectingValue].ReturnValue"] + - ["Swift.Set", "Network.NWBrowser", "Member[browseResults]"] + - ["Swift.Set", "Swift.Duration.UnitsFormatStyle", "Member[allowedUnits]"] + - ["Swift.Set", "Swift.Set", "Member[filter].ReturnValue"] + - ["Swift.Set", "Swift.Set", "Member[intersection].ReturnValue"] + - ["Swift.Set", "Swift.Set", "Member[subtracting].ReturnValue"] + - ["Swift.Set", "Swift.Set", "Member[symmetricDifference].ReturnValue"] + - ["Swift.Set", "Swift.Set", "Member[union].ReturnValue"] + - ["Swift.Set", "UIKit.UIPasteboard", "Member[detectedPatterns].WithoutNamedArgument[inItemSet].ReturnValue"] + - ["Swift.Set", "UIKit.UIPasteboard.DetectedValues", "Member[patterns]"] + - ["Swift.Set", "UIKit.UIScene", "Member[destructionConditions]"] + - ["Swift.Set", "UIKit.UITextFormattingViewController.FormattingDescriptor", "Member[highlights]"] + - ["Swift.Set", "UIKit.UITextFormattingViewController.FormattingDescriptor", "Member[textAlignments]"] + - ["Swift.Set", "UIKit.UITextFormattingViewController.FormattingDescriptor", "Member[textLists]"] + - ["Swift.Strideable", "Foundation.AttributeScopes.FoundationAttributes.DurationFieldAttribute.Field", ""] + - ["Swift.Strideable", "Foundation.AttributeScopes.FoundationAttributes.MeasurementAttribute.Component", ""] + - ["Swift.Strideable", "Foundation.AttributeScopes.FoundationAttributes.NumberFormatAttributes.NumberPartAttribute.NumberPart", ""] + - ["Swift.Strideable", "Foundation.AttributeScopes.FoundationAttributes.NumberFormatAttributes.SymbolAttribute.Symbol", ""] + - ["Swift.Strideable", "Foundation.AttributedString.MarkdownParsingOptions.FailurePolicy", ""] + - ["Swift.Strideable", "Foundation.AttributedString.MarkdownParsingOptions.InterpretedSyntax", ""] + - ["Swift.Strideable", "Foundation.AttributedString.Runs.Index", ""] + - ["Swift.Strideable", "Foundation.ByteCountFormatStyle.Style", ""] + - ["Swift.Strideable", "Foundation.Calendar.RecurrenceRule.Frequency", ""] + - ["Swift.Strideable", "Foundation.Date", ""] + - ["Swift.Strideable", "Foundation.Decimal", ""] + - ["Swift.Strideable", "Foundation.ListFormatStyle.ListType", ""] + - ["Swift.Strideable", "Foundation.ListFormatStyle.Width", ""] + - ["Swift.Strideable", "Foundation.Morphology.Definiteness", ""] + - ["Swift.Strideable", "Foundation.Morphology.Determination", ""] + - ["Swift.Strideable", "Foundation.Morphology.GrammaticalCase", ""] + - ["Swift.Strideable", "Foundation.Morphology.GrammaticalGender", ""] + - ["Swift.Strideable", "Foundation.Morphology.GrammaticalNumber", ""] + - ["Swift.Strideable", "Foundation.Morphology.GrammaticalPerson", ""] + - ["Swift.Strideable", "Foundation.Morphology.PartOfSpeech", ""] + - ["Swift.Strideable", "Foundation.Morphology.PronounType", ""] + - ["Swift.Strideable", "Foundation.OperationQueue.SchedulerTimeType", ""] + - ["Swift.Strideable", "Foundation.PersonNameComponents.FormatStyle.Style", ""] + - ["Swift.Strideable", "Foundation.PresentationIntent.TableColumn.Alignment", ""] + - ["Swift.Strideable", "Foundation.RunLoop.SchedulerTimeType", ""] + - ["Swift.Strideable", "Foundation.URL.FormatStyle.Component", ""] + - ["Swift.Strideable", "Foundation.URLError.BackgroundTaskCancelledReason", ""] + - ["Swift.Strideable", "Foundation.URLError.NetworkUnavailableReason", ""] + - ["Swift.Strideable", "Network.IPv6Address.Scope", ""] + - ["Swift.Strideable", "Network.NWProtocolWebSocket.CloseCode.Defined", ""] + - ["Swift.Strideable", "Network.NWProtocolWebSocket.Opcode", ""] + - ["Swift.Strideable", "Network.NetworkFixedWidthInteger", ""] + - ["Swift.Strideable", "Swift.AutoreleasingUnsafeMutablePointer", ""] + - ["Swift.Strideable", "Swift.BinaryFloatingPoint", ""] + - ["Swift.Strideable", "Swift.BinaryInteger", ""] + - ["Swift.Strideable", "Swift.Double", ""] + - ["Swift.Strideable", "Swift.FixedWidthInteger", ""] + - ["Swift.Strideable", "Swift.Float", ""] + - ["Swift.Strideable", "Swift.Float16", ""] + - ["Swift.Strideable", "Swift.FloatingPoint", ""] + - ["Swift.Strideable", "Swift.FloatingPointSign", ""] + - ["Swift.Strideable", "Swift.Int", ""] + - ["Swift.Strideable", "Swift.Int128", ""] + - ["Swift.Strideable", "Swift.Int16", ""] + - ["Swift.Strideable", "Swift.Int32", ""] + - ["Swift.Strideable", "Swift.Int64", ""] + - ["Swift.Strideable", "Swift.Int8", ""] + - ["Swift.Strideable", "Swift.SignedInteger", ""] + - ["Swift.Strideable", "Swift.UInt", ""] + - ["Swift.Strideable", "Swift.UInt128", ""] + - ["Swift.Strideable", "Swift.UInt16", ""] + - ["Swift.Strideable", "Swift.UInt32", ""] + - ["Swift.Strideable", "Swift.UInt64", ""] + - ["Swift.Strideable", "Swift.UInt8", ""] + - ["Swift.Strideable", "Swift.UnsafeMutablePointer", ""] + - ["Swift.Strideable", "Swift.UnsafeMutableRawPointer", ""] + - ["Swift.Strideable", "Swift.UnsafePointer", ""] + - ["Swift.Strideable", "Swift.UnsafeRawPointer", ""] + - ["Swift.Strideable", "Swift.UnsignedInteger", ""] + - ["Swift.Strideable", "Swift._Pointer", ""] + - ["Swift.String", "AppleArchive.ArchiveCompression", "Member[description]"] + - ["Swift.String", "AppleArchive.ArchiveEncryptionContext", "Member[generatePassword].ReturnValue"] + - ["Swift.String", "AppleArchive.ArchiveEncryptionContext", "Member[password]"] + - ["Swift.String", "AppleArchive.ArchiveEncryptionContext.ChecksumMode", "Member[description]"] + - ["Swift.String", "AppleArchive.ArchiveEncryptionContext.EncryptionMode", "Member[description]"] + - ["Swift.String", "AppleArchive.ArchiveEncryptionContext.Profile", "Member[description]"] + - ["Swift.String", "AppleArchive.ArchiveEncryptionContext.SignatureMode", "Member[description]"] + - ["Swift.String", "AppleArchive.ArchiveHash", "Member[description]"] + - ["Swift.String", "AppleArchive.ArchiveHeader.EntryMessage", "Member[description]"] + - ["Swift.String", "AppleArchive.ArchiveHeader.EntryMessageStatus", "Member[description]"] + - ["Swift.String", "AppleArchive.ArchiveHeader.EntryType", "Member[description]"] + - ["Swift.String", "AppleArchive.ArchiveHeader.EntryXATBlob.ExtendedAttribute", "Member[description]"] + - ["Swift.String", "AppleArchive.ArchiveHeader.FieldKey", "Member[description]"] + - ["Swift.String", "AppleArchive.ArchiveHeader.FieldKeySet", "Member[description]"] + - ["Swift.String", "AppleArchive.ArchiveHeader.FieldType", "Member[description]"] + - ["Swift.String", "CryptoKit.Digest", "Member[description]"] + - ["Swift.String", "CryptoKit.HashedAuthenticationCode", "Member[description]"] + - ["Swift.String", "CryptoKit.Insecure.MD5Digest", "Member[description]"] + - ["Swift.String", "CryptoKit.Insecure.SHA1Digest", "Member[description]"] + - ["Swift.String", "CryptoKit.MessageAuthenticationCode", "Member[description]"] + - ["Swift.String", "CryptoKit.P256.KeyAgreement.PrivateKey", "Member[pemRepresentation]"] + - ["Swift.String", "CryptoKit.P256.KeyAgreement.PublicKey", "Member[pemRepresentation]"] + - ["Swift.String", "CryptoKit.P256.Signing.PrivateKey", "Member[pemRepresentation]"] + - ["Swift.String", "CryptoKit.P256.Signing.PublicKey", "Member[pemRepresentation]"] + - ["Swift.String", "CryptoKit.P384.KeyAgreement.PrivateKey", "Member[pemRepresentation]"] + - ["Swift.String", "CryptoKit.P384.KeyAgreement.PublicKey", "Member[pemRepresentation]"] + - ["Swift.String", "CryptoKit.P384.Signing.PrivateKey", "Member[pemRepresentation]"] + - ["Swift.String", "CryptoKit.P384.Signing.PublicKey", "Member[pemRepresentation]"] + - ["Swift.String", "CryptoKit.P521.KeyAgreement.PrivateKey", "Member[pemRepresentation]"] + - ["Swift.String", "CryptoKit.P521.KeyAgreement.PublicKey", "Member[pemRepresentation]"] + - ["Swift.String", "CryptoKit.P521.Signing.PrivateKey", "Member[pemRepresentation]"] + - ["Swift.String", "CryptoKit.P521.Signing.PublicKey", "Member[pemRepresentation]"] + - ["Swift.String", "CryptoKit.SHA256Digest", "Member[description]"] + - ["Swift.String", "CryptoKit.SHA384Digest", "Member[description]"] + - ["Swift.String", "CryptoKit.SHA3_256Digest", "Member[description]"] + - ["Swift.String", "CryptoKit.SHA3_384Digest", "Member[description]"] + - ["Swift.String", "CryptoKit.SHA3_512Digest", "Member[description]"] + - ["Swift.String", "CryptoKit.SHA512Digest", "Member[description]"] + - ["Swift.String", "CryptoKit.SharedSecret", "Member[description]"] + - ["Swift.String", "Foundation", "Member[NSLocalizedString].ReturnValue"] + - ["Swift.String", "Foundation.AffineTransform", "Member[debugDescription]"] + - ["Swift.String", "Foundation.AffineTransform", "Member[description]"] + - ["Swift.String", "Foundation.AsyncLineSequence.AsyncIterator", "Member[next].ReturnValue"] + - ["Swift.String", "Foundation.AttributeContainer", "Member[description]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.AgreementArgumentAttribute.Type", "Member[markdownName]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.AgreementArgumentAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.AgreementConceptAttribute.Type", "Member[markdownName]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.AgreementConceptAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.AlternateDescriptionAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.ByteCountAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.DateFieldAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.DurationFieldAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.ImageURLAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.InflectionAlternativeAttribute.Type", "Member[markdownName]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.InflectionAlternativeAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.InflectionRuleAttribute.Type", "Member[markdownName]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.InflectionRuleAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.InlinePresentationIntentAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.LanguageIdentifierAttribute.Type", "Member[markdownName]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.LanguageIdentifierAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.LinkAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.ListItemDelimiterAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.LocalizedNumberFormatAttribute.Type", "Member[markdownName]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.LocalizedNumberFormatAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.LocalizedStringArgumentAttributes.LocalizedDateArgumentAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.LocalizedStringArgumentAttributes.LocalizedDateIntervalArgumentAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.LocalizedStringArgumentAttributes.LocalizedNumericArgumentAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.LocalizedStringArgumentAttributes.LocalizedURLArgumentAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.MarkdownSourcePositionAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.MeasurementAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.MorphologyAttribute.Type", "Member[markdownName]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.MorphologyAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.NumberFormatAttributes.NumberPartAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.NumberFormatAttributes.SymbolAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.PersonNameComponentAttribute.Component", ""] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.PersonNameComponentAttribute.Component", "Member[rawValue]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.PersonNameComponentAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.PresentationIntentAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.ReferentConceptAttribute.Type", "Member[markdownName]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.ReferentConceptAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.ReplacementIndexAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.FoundationAttributes.WritingDirectionAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.UIKitAttributes.AdaptiveImageGlyphAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.UIKitAttributes.AttachmentAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.UIKitAttributes.BackgroundColorAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.UIKitAttributes.BaselineOffsetAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.UIKitAttributes.ExpansionAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.UIKitAttributes.FontAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.UIKitAttributes.ForegroundColorAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.UIKitAttributes.KernAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.UIKitAttributes.LigatureAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.UIKitAttributes.ObliquenessAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.UIKitAttributes.ParagraphStyleAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.UIKitAttributes.ShadowAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.UIKitAttributes.StrikethroughColorAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.UIKitAttributes.StrikethroughStyleAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.UIKitAttributes.StrokeColorAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.UIKitAttributes.StrokeWidthAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.UIKitAttributes.TextEffectAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.UIKitAttributes.TextItemTagAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.UIKitAttributes.TrackingAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.UIKitAttributes.UnderlineColorAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributeScopes.UIKitAttributes.UnderlineStyleAttribute.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributedString.MarkdownParsingOptions", "Member[languageCode]"] + - ["Swift.String", "Foundation.AttributedString.Runs", "Member[description]"] + - ["Swift.String", "Foundation.AttributedString.Runs.Run", "Member[description]"] + - ["Swift.String", "Foundation.AttributedStringKey", "Member[description]"] + - ["Swift.String", "Foundation.AttributedStringKey.Type", "Member[name]"] + - ["Swift.String", "Foundation.AttributedStringProtocol", "Member[description]"] + - ["Swift.String", "Foundation.AttributedSubstring", "Member[description]"] + - ["Swift.String", "Foundation.Bundle", "Member[localizedString].ReturnValue"] + - ["Swift.String", "Foundation.ByteCountFormatStyle", "Member[format].ReturnValue"] + - ["Swift.String", "Foundation.Calendar", "Member[amSymbol]"] + - ["Swift.String", "Foundation.Calendar", "Member[debugDescription]"] + - ["Swift.String", "Foundation.Calendar", "Member[description]"] + - ["Swift.String", "Foundation.Calendar", "Member[pmSymbol]"] + - ["Swift.String", "Foundation.Calendar.Identifier", "Member[debugDescription]"] + - ["Swift.String", "Foundation.Calendar.RecurrenceRule.End", "Member[description]"] + - ["Swift.String", "Foundation.CharacterSet", "Member[debugDescription]"] + - ["Swift.String", "Foundation.CharacterSet", "Member[description]"] + - ["Swift.String", "Foundation.CocoaError", "Member[filePath]"] + - ["Swift.String", "Foundation.CocoaError.Type", "Member[errorDomain]"] + - ["Swift.String", "Foundation.CustomNSError.Type", "Member[errorDomain]"] + - ["Swift.String", "Foundation.Data", "Member[base64EncodedString].ReturnValue"] + - ["Swift.String", "Foundation.Data", "Member[debugDescription]"] + - ["Swift.String", "Foundation.Data", "Member[description]"] + - ["Swift.String", "Foundation.Date", "Member[ISO8601Format].ReturnValue"] + - ["Swift.String", "Foundation.Date", "Member[debugDescription]"] + - ["Swift.String", "Foundation.Date", "Member[description]"] + - ["Swift.String", "Foundation.Date", "Member[description].WithNamedArgument[with].ReturnValue"] + - ["Swift.String", "Foundation.Date", "Member[formatted].ReturnValue"] + - ["Swift.String", "Foundation.Date", "Member[formatted].WithNamedArgument[date].ReturnValue"] + - ["Swift.String", "Foundation.Date.AnchoredRelativeFormatStyle", "Member[format].ReturnValue"] + - ["Swift.String", "Foundation.Date.ComponentsFormatStyle", "Member[format].ReturnValue"] + - ["Swift.String", "Foundation.Date.FormatStyle", "Member[format].ReturnValue"] + - ["Swift.String", "Foundation.Date.HTTPFormatStyle", "Member[format].ReturnValue"] + - ["Swift.String", "Foundation.Date.ISO8601FormatStyle", "Member[format].ReturnValue"] + - ["Swift.String", "Foundation.Date.ISO8601FormatStyle.DateSeparator", ""] + - ["Swift.String", "Foundation.Date.ISO8601FormatStyle.DateSeparator", "Member[rawValue]"] + - ["Swift.String", "Foundation.Date.ISO8601FormatStyle.DateTimeSeparator", ""] + - ["Swift.String", "Foundation.Date.ISO8601FormatStyle.DateTimeSeparator", "Member[rawValue]"] + - ["Swift.String", "Foundation.Date.ISO8601FormatStyle.TimeSeparator", ""] + - ["Swift.String", "Foundation.Date.ISO8601FormatStyle.TimeSeparator", "Member[rawValue]"] + - ["Swift.String", "Foundation.Date.ISO8601FormatStyle.TimeZoneSeparator", ""] + - ["Swift.String", "Foundation.Date.ISO8601FormatStyle.TimeZoneSeparator", "Member[rawValue]"] + - ["Swift.String", "Foundation.Date.IntervalFormatStyle", "Member[format].ReturnValue"] + - ["Swift.String", "Foundation.Date.ParseStrategy", "Member[format]"] + - ["Swift.String", "Foundation.Date.RelativeFormatStyle", "Member[format].ReturnValue"] + - ["Swift.String", "Foundation.Date.VerbatimFormatStyle", "Member[format].ReturnValue"] + - ["Swift.String", "Foundation.DateComponents", "Member[debugDescription]"] + - ["Swift.String", "Foundation.DateComponents", "Member[description]"] + - ["Swift.String", "Foundation.DateComponents.HTTPFormatStyle", "Member[format].ReturnValue"] + - ["Swift.String", "Foundation.DateComponents.ISO8601FormatStyle", "Member[format].ReturnValue"] + - ["Swift.String", "Foundation.DateInterval", "Member[debugDescription]"] + - ["Swift.String", "Foundation.DateInterval", "Member[description]"] + - ["Swift.String", "Foundation.Decimal", "Member[description]"] + - ["Swift.String", "Foundation.Decimal", "Member[formatted].ReturnValue"] + - ["Swift.String", "Foundation.Decimal.FormatStyle", "Member[format].ReturnValue"] + - ["Swift.String", "Foundation.Decimal.FormatStyle.Currency", "Member[currencyCode]"] + - ["Swift.String", "Foundation.Decimal.FormatStyle.Currency", "Member[format].ReturnValue"] + - ["Swift.String", "Foundation.Decimal.FormatStyle.Percent", "Member[format].ReturnValue"] + - ["Swift.String", "Foundation.DiscontiguousAttributedSubstring", "Member[description]"] + - ["Swift.String", "Foundation.ErrorUserInfoKey", "Member[rawValue]"] + - ["Swift.String", "Foundation.Expression", "Member[debugDescription]"] + - ["Swift.String", "Foundation.Expression", "Member[description]"] + - ["Swift.String", "Foundation.FloatingPointFormatStyle", "Member[format].ReturnValue"] + - ["Swift.String", "Foundation.FloatingPointFormatStyle.Currency", "Member[currencyCode]"] + - ["Swift.String", "Foundation.FloatingPointFormatStyle.Currency", "Member[format].ReturnValue"] + - ["Swift.String", "Foundation.FloatingPointFormatStyle.Percent", "Member[format].ReturnValue"] + - ["Swift.String", "Foundation.IndexPath", "Member[debugDescription]"] + - ["Swift.String", "Foundation.IndexPath", "Member[description]"] + - ["Swift.String", "Foundation.IndexSet", "Member[debugDescription]"] + - ["Swift.String", "Foundation.IndexSet", "Member[description]"] + - ["Swift.String", "Foundation.IndexSet.Index", "Member[description]"] + - ["Swift.String", "Foundation.IntegerFormatStyle", "Member[format].ReturnValue"] + - ["Swift.String", "Foundation.IntegerFormatStyle.Currency", "Member[currencyCode]"] + - ["Swift.String", "Foundation.IntegerFormatStyle.Currency", "Member[format].ReturnValue"] + - ["Swift.String", "Foundation.IntegerFormatStyle.Percent", "Member[format].ReturnValue"] + - ["Swift.String", "Foundation.ListFormatStyle", "Member[format].ReturnValue"] + - ["Swift.String", "Foundation.Locale", "Member[alternateQuotationBeginDelimiter]"] + - ["Swift.String", "Foundation.Locale", "Member[alternateQuotationEndDelimiter]"] + - ["Swift.String", "Foundation.Locale", "Member[collationIdentifier]"] + - ["Swift.String", "Foundation.Locale", "Member[collatorIdentifier]"] + - ["Swift.String", "Foundation.Locale", "Member[currencyCode]"] + - ["Swift.String", "Foundation.Locale", "Member[currencySymbol]"] + - ["Swift.String", "Foundation.Locale", "Member[debugDescription]"] + - ["Swift.String", "Foundation.Locale", "Member[decimalSeparator]"] + - ["Swift.String", "Foundation.Locale", "Member[description]"] + - ["Swift.String", "Foundation.Locale", "Member[groupingSeparator]"] + - ["Swift.String", "Foundation.Locale", "Member[identifier]"] + - ["Swift.String", "Foundation.Locale", "Member[identifier].ReturnValue"] + - ["Swift.String", "Foundation.Locale", "Member[languageCode]"] + - ["Swift.String", "Foundation.Locale", "Member[localizedString].WithNamedArgument[forCollationIdentifier].ReturnValue"] + - ["Swift.String", "Foundation.Locale", "Member[localizedString].WithNamedArgument[forCollatorIdentifier].ReturnValue"] + - ["Swift.String", "Foundation.Locale", "Member[localizedString].WithNamedArgument[forCurrencyCode].ReturnValue"] + - ["Swift.String", "Foundation.Locale", "Member[localizedString].WithNamedArgument[forIdentifier].ReturnValue"] + - ["Swift.String", "Foundation.Locale", "Member[localizedString].WithNamedArgument[forLanguageCode].ReturnValue"] + - ["Swift.String", "Foundation.Locale", "Member[localizedString].WithNamedArgument[forRegionCode].ReturnValue"] + - ["Swift.String", "Foundation.Locale", "Member[localizedString].WithNamedArgument[forScriptCode].ReturnValue"] + - ["Swift.String", "Foundation.Locale", "Member[localizedString].WithNamedArgument[forVariantCode].ReturnValue"] + - ["Swift.String", "Foundation.Locale", "Member[localizedString].WithNamedArgument[for].ReturnValue"] + - ["Swift.String", "Foundation.Locale", "Member[quotationBeginDelimiter]"] + - ["Swift.String", "Foundation.Locale", "Member[quotationEndDelimiter]"] + - ["Swift.String", "Foundation.Locale", "Member[regionCode]"] + - ["Swift.String", "Foundation.Locale", "Member[scriptCode]"] + - ["Swift.String", "Foundation.Locale", "Member[variantCode]"] + - ["Swift.String", "Foundation.Locale.Collation", "Member[debugDescription]"] + - ["Swift.String", "Foundation.Locale.Collation", "Member[identifier]"] + - ["Swift.String", "Foundation.Locale.Currency", "Member[debugDescription]"] + - ["Swift.String", "Foundation.Locale.Currency", "Member[identifier]"] + - ["Swift.String", "Foundation.Locale.HourCycle", ""] + - ["Swift.String", "Foundation.Locale.HourCycle", "Member[rawValue]"] + - ["Swift.String", "Foundation.Locale.Language", "Member[maximalIdentifier]"] + - ["Swift.String", "Foundation.Locale.Language", "Member[minimalIdentifier]"] + - ["Swift.String", "Foundation.Locale.LanguageCode", "Member[debugDescription]"] + - ["Swift.String", "Foundation.Locale.LanguageCode", "Member[identifier]"] + - ["Swift.String", "Foundation.Locale.LanguageCode", "Member[identifier].ReturnValue"] + - ["Swift.String", "Foundation.Locale.MeasurementSystem", "Member[debugDescription]"] + - ["Swift.String", "Foundation.Locale.MeasurementSystem", "Member[identifier]"] + - ["Swift.String", "Foundation.Locale.NumberingSystem", "Member[debugDescription]"] + - ["Swift.String", "Foundation.Locale.NumberingSystem", "Member[identifier]"] + - ["Swift.String", "Foundation.Locale.Region", "Member[debugDescription]"] + - ["Swift.String", "Foundation.Locale.Region", "Member[identifier]"] + - ["Swift.String", "Foundation.Locale.Region.Category", "Member[debugDescription]"] + - ["Swift.String", "Foundation.Locale.Script", "Member[debugDescription]"] + - ["Swift.String", "Foundation.Locale.Script", "Member[identifier]"] + - ["Swift.String", "Foundation.Locale.Subdivision", "Member[debugDescription]"] + - ["Swift.String", "Foundation.Locale.Subdivision", "Member[identifier]"] + - ["Swift.String", "Foundation.Locale.Type", "Member[canonicalIdentifier].ReturnValue"] + - ["Swift.String", "Foundation.Locale.Type", "Member[canonicalLanguageIdentifier].ReturnValue"] + - ["Swift.String", "Foundation.Locale.Type", "Member[identifier].WithNamedArgument[fromComponents].ReturnValue"] + - ["Swift.String", "Foundation.Locale.Type", "Member[identifier].WithNamedArgument[fromWindowsLocaleCode].ReturnValue"] + - ["Swift.String", "Foundation.Locale.Type", "Member[identifier].WithNamedArgument[from].ReturnValue"] + - ["Swift.String", "Foundation.Locale.Variant", "Member[debugDescription]"] + - ["Swift.String", "Foundation.Locale.Variant", "Member[identifier]"] + - ["Swift.String", "Foundation.Locale.Weekday", ""] + - ["Swift.String", "Foundation.Locale.Weekday", "Member[rawValue]"] + - ["Swift.String", "Foundation.LocalizedError", "Member[errorDescription]"] + - ["Swift.String", "Foundation.LocalizedError", "Member[failureReason]"] + - ["Swift.String", "Foundation.LocalizedError", "Member[helpAnchor]"] + - ["Swift.String", "Foundation.LocalizedError", "Member[recoverySuggestion]"] + - ["Swift.String", "Foundation.LocalizedStringResource", "Member[key]"] + - ["Swift.String", "Foundation.LocalizedStringResource", "Member[table]"] + - ["Swift.String", "Foundation.MachError.Type", "Member[errorDomain]"] + - ["Swift.String", "Foundation.MarkdownDecodableAttributedStringKey.Type", "Member[markdownName]"] + - ["Swift.String", "Foundation.Measurement", "Member[debugDescription]"] + - ["Swift.String", "Foundation.Measurement", "Member[description]"] + - ["Swift.String", "Foundation.Measurement", "Member[formatted].ReturnValue"] + - ["Swift.String", "Foundation.Measurement.FormatStyle", "Member[format].ReturnValue"] + - ["Swift.String", "Foundation.Measurement.FormatStyle.ByteCount", "Member[format].ReturnValue"] + - ["Swift.String", "Foundation.MeasurementFormatter", "Member[string].ReturnValue"] + - ["Swift.String", "Foundation.Morphology.CustomPronoun", "Member[objectForm]"] + - ["Swift.String", "Foundation.Morphology.CustomPronoun", "Member[possessiveAdjectiveForm]"] + - ["Swift.String", "Foundation.Morphology.CustomPronoun", "Member[possessiveForm]"] + - ["Swift.String", "Foundation.Morphology.CustomPronoun", "Member[reflexiveForm]"] + - ["Swift.String", "Foundation.Morphology.CustomPronoun", "Member[subjectForm]"] + - ["Swift.String", "Foundation.Morphology.Pronoun", "Member[pronoun]"] + - ["Swift.String", "Foundation.Notification", "Member[debugDescription]"] + - ["Swift.String", "Foundation.Notification", "Member[description]"] + - ["Swift.String", "Foundation.NumberFormatStyleConfiguration.DecimalSeparatorDisplayStrategy", "Member[description]"] + - ["Swift.String", "Foundation.NumberFormatStyleConfiguration.Grouping", "Member[description]"] + - ["Swift.String", "Foundation.NumberFormatStyleConfiguration.Notation", "Member[description]"] + - ["Swift.String", "Foundation.NumberFormatStyleConfiguration.SignDisplayStrategy", "Member[description]"] + - ["Swift.String", "Foundation.POSIXError.Type", "Member[errorDomain]"] + - ["Swift.String", "Foundation.PersonNameComponents", "Member[debugDescription]"] + - ["Swift.String", "Foundation.PersonNameComponents", "Member[description]"] + - ["Swift.String", "Foundation.PersonNameComponents", "Member[familyName]"] + - ["Swift.String", "Foundation.PersonNameComponents", "Member[formatted].ReturnValue"] + - ["Swift.String", "Foundation.PersonNameComponents", "Member[givenName]"] + - ["Swift.String", "Foundation.PersonNameComponents", "Member[middleName]"] + - ["Swift.String", "Foundation.PersonNameComponents", "Member[namePrefix]"] + - ["Swift.String", "Foundation.PersonNameComponents", "Member[nameSuffix]"] + - ["Swift.String", "Foundation.PersonNameComponents", "Member[nickname]"] + - ["Swift.String", "Foundation.PersonNameComponents.FormatStyle", "Member[format].ReturnValue"] + - ["Swift.String", "Foundation.Predicate", "Member[debugDescription]"] + - ["Swift.String", "Foundation.Predicate", "Member[description]"] + - ["Swift.String", "Foundation.PredicateCodableConfiguration", "Member[debugDescription]"] + - ["Swift.String", "Foundation.PredicateError", "Member[debugDescription]"] + - ["Swift.String", "Foundation.PredicateExpressions.Arithmetic", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.ClosedRange", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.CollectionContainsCollection", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.CollectionIndexSubscript", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.CollectionRangeSubscript", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.Comparison", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.Conditional", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.ConditionalCast", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.Conjunction", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.DictionaryKeyDefaultValueSubscript", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.DictionaryKeySubscript", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.Disjunction", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.Equal", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.ExpressionEvaluate", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.Filter", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.FloatDivision", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.ForceCast", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.ForcedUnwrap", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.IntDivision", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.IntRemainder", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.KeyPath", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.Negation", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.NilCoalesce", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.NotEqual", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.OptionalFlatMap", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.PredicateEvaluate", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.PredicateRegex", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.PredicateRegex", "Member[stringRepresentation]"] + - ["Swift.String", "Foundation.PredicateExpressions.Range", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.RangeExpressionContains", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.SequenceAllSatisfy", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.SequenceContains", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.SequenceContainsWhere", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.SequenceMaximum", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.SequenceMinimum", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.StringCaseInsensitiveCompare", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.StringContainsRegex", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.StringLocalizedCompare", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.StringLocalizedStandardContains", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.TypeCheck", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.UnaryMinus", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.Value", "Member[description]"] + - ["Swift.String", "Foundation.PredicateExpressions.Variable", "Member[description]"] + - ["Swift.String", "Foundation.PresentationIntent", "Member[debugDescription]"] + - ["Swift.String", "Foundation.PresentationIntent.IntentType", "Member[debugDescription]"] + - ["Swift.String", "Foundation.PresentationIntent.Kind", "Member[debugDescription]"] + - ["Swift.String", "Foundation.ProgressManager", "Member[debugDescription]"] + - ["Swift.String", "Foundation.ProgressManager", "Member[description]"] + - ["Swift.String", "Foundation.ProgressManager.Properties.CompletedByteCount.Type", "Member[key]"] + - ["Swift.String", "Foundation.ProgressManager.Properties.CompletedFileCount.Type", "Member[key]"] + - ["Swift.String", "Foundation.ProgressManager.Properties.EstimatedTimeRemaining.Type", "Member[key]"] + - ["Swift.String", "Foundation.ProgressManager.Properties.Throughput.Type", "Member[key]"] + - ["Swift.String", "Foundation.ProgressManager.Properties.TotalByteCount.Type", "Member[key]"] + - ["Swift.String", "Foundation.ProgressManager.Properties.TotalFileCount.Type", "Member[key]"] + - ["Swift.String", "Foundation.ProgressManager.Property.Type", "Member[key]"] + - ["Swift.String", "Foundation.ProgressReporter", "Member[debugDescription]"] + - ["Swift.String", "Foundation.ProgressReporter", "Member[description]"] + - ["Swift.String", "Foundation.Scanner", "Member[scanCharacters].ReturnValue"] + - ["Swift.String", "Foundation.Scanner", "Member[scanString].ReturnValue"] + - ["Swift.String", "Foundation.Scanner", "Member[scanUpToCharacters].ReturnValue"] + - ["Swift.String", "Foundation.Scanner", "Member[scanUpToString].ReturnValue"] + - ["Swift.String", "Foundation.StringStyle", "Member[format].ReturnValue"] + - ["Swift.String", "Foundation.TimeZone", "Member[abbreviation].ReturnValue"] + - ["Swift.String", "Foundation.TimeZone", "Member[debugDescription]"] + - ["Swift.String", "Foundation.TimeZone", "Member[description]"] + - ["Swift.String", "Foundation.TimeZone", "Member[identifier]"] + - ["Swift.String", "Foundation.TimeZone", "Member[localizedName].ReturnValue"] + - ["Swift.String", "Foundation.TimeZone.Type", "Member[timeZoneDataVersion]"] + - ["Swift.String", "Foundation.URL", "Member[absoluteString]"] + - ["Swift.String", "Foundation.URL", "Member[debugDescription]"] + - ["Swift.String", "Foundation.URL", "Member[description]"] + - ["Swift.String", "Foundation.URL", "Member[formatted].ReturnValue"] + - ["Swift.String", "Foundation.URL", "Member[fragment]"] + - ["Swift.String", "Foundation.URL", "Member[fragment].ReturnValue"] + - ["Swift.String", "Foundation.URL", "Member[host]"] + - ["Swift.String", "Foundation.URL", "Member[host].ReturnValue"] + - ["Swift.String", "Foundation.URL", "Member[lastPathComponent]"] + - ["Swift.String", "Foundation.URL", "Member[password]"] + - ["Swift.String", "Foundation.URL", "Member[password].ReturnValue"] + - ["Swift.String", "Foundation.URL", "Member[pathExtension]"] + - ["Swift.String", "Foundation.URL", "Member[path]"] + - ["Swift.String", "Foundation.URL", "Member[path].ReturnValue"] + - ["Swift.String", "Foundation.URL", "Member[query]"] + - ["Swift.String", "Foundation.URL", "Member[query].ReturnValue"] + - ["Swift.String", "Foundation.URL", "Member[relativePath]"] + - ["Swift.String", "Foundation.URL", "Member[relativeString]"] + - ["Swift.String", "Foundation.URL", "Member[scheme]"] + - ["Swift.String", "Foundation.URL", "Member[user]"] + - ["Swift.String", "Foundation.URL", "Member[user].ReturnValue"] + - ["Swift.String", "Foundation.URL.FormatStyle", "Member[format].ReturnValue"] + - ["Swift.String", "Foundation.URL.FormatStyle.Component", "Member[description]"] + - ["Swift.String", "Foundation.URL.FormatStyle.ComponentDisplayOption", "Member[description]"] + - ["Swift.String", "Foundation.URL.FormatStyle.HostDisplayOption", "Member[description]"] + - ["Swift.String", "Foundation.URL.ParseStrategy.ComponentParseStrategy", "Member[description]"] + - ["Swift.String", "Foundation.URL.Template", "Member[description]"] + - ["Swift.String", "Foundation.URL.Template.Value", "Member[description]"] + - ["Swift.String", "Foundation.URL.Template.VariableName", "Member[description]"] + - ["Swift.String", "Foundation.URLComponents", "Member[debugDescription]"] + - ["Swift.String", "Foundation.URLComponents", "Member[description]"] + - ["Swift.String", "Foundation.URLComponents", "Member[encodedHost]"] + - ["Swift.String", "Foundation.URLComponents", "Member[fragment]"] + - ["Swift.String", "Foundation.URLComponents", "Member[host]"] + - ["Swift.String", "Foundation.URLComponents", "Member[password]"] + - ["Swift.String", "Foundation.URLComponents", "Member[path]"] + - ["Swift.String", "Foundation.URLComponents", "Member[percentEncodedFragment]"] + - ["Swift.String", "Foundation.URLComponents", "Member[percentEncodedHost]"] + - ["Swift.String", "Foundation.URLComponents", "Member[percentEncodedPassword]"] + - ["Swift.String", "Foundation.URLComponents", "Member[percentEncodedPath]"] + - ["Swift.String", "Foundation.URLComponents", "Member[percentEncodedQuery]"] + - ["Swift.String", "Foundation.URLComponents", "Member[percentEncodedUser]"] + - ["Swift.String", "Foundation.URLComponents", "Member[query]"] + - ["Swift.String", "Foundation.URLComponents", "Member[scheme]"] + - ["Swift.String", "Foundation.URLComponents", "Member[string]"] + - ["Swift.String", "Foundation.URLComponents", "Member[user]"] + - ["Swift.String", "Foundation.URLError", "Member[failureURLString]"] + - ["Swift.String", "Foundation.URLError.Type", "Member[errorDomain]"] + - ["Swift.String", "Foundation.URLQueryItem", "Member[debugDescription]"] + - ["Swift.String", "Foundation.URLQueryItem", "Member[description]"] + - ["Swift.String", "Foundation.URLQueryItem", "Member[name]"] + - ["Swift.String", "Foundation.URLQueryItem", "Member[value]"] + - ["Swift.String", "Foundation.URLRequest", "Member[cookiePartitionIdentifier]"] + - ["Swift.String", "Foundation.URLRequest", "Member[debugDescription]"] + - ["Swift.String", "Foundation.URLRequest", "Member[description]"] + - ["Swift.String", "Foundation.URLRequest", "Member[httpMethod]"] + - ["Swift.String", "Foundation.URLRequest", "Member[value].ReturnValue"] + - ["Swift.String", "Foundation.URLResource", "Member[name]"] + - ["Swift.String", "Foundation.URLResource", "Member[subdirectory]"] + - ["Swift.String", "Foundation.URLResourceValues", "Member[canonicalPath]"] + - ["Swift.String", "Foundation.URLResourceValues", "Member[localizedLabel]"] + - ["Swift.String", "Foundation.URLResourceValues", "Member[localizedName]"] + - ["Swift.String", "Foundation.URLResourceValues", "Member[localizedTypeDescription]"] + - ["Swift.String", "Foundation.URLResourceValues", "Member[name]"] + - ["Swift.String", "Foundation.URLResourceValues", "Member[path]"] + - ["Swift.String", "Foundation.URLResourceValues", "Member[typeIdentifier]"] + - ["Swift.String", "Foundation.URLResourceValues", "Member[ubiquitousItemContainerDisplayName]"] + - ["Swift.String", "Foundation.URLResourceValues", "Member[volumeLocalizedFormatDescription]"] + - ["Swift.String", "Foundation.URLResourceValues", "Member[volumeLocalizedName]"] + - ["Swift.String", "Foundation.URLResourceValues", "Member[volumeMountFromLocation]"] + - ["Swift.String", "Foundation.URLResourceValues", "Member[volumeName]"] + - ["Swift.String", "Foundation.URLResourceValues", "Member[volumeTypeName]"] + - ["Swift.String", "Foundation.URLResourceValues", "Member[volumeUUIDString]"] + - ["Swift.String", "Foundation.UUID", "Member[debugDescription]"] + - ["Swift.String", "Foundation.UUID", "Member[description]"] + - ["Swift.String", "Foundation.UUID", "Member[uuidString]"] + - ["Swift.String", "Foundation._NSRange", "Member[debugDescription]"] + - ["Swift.String", "Foundation._NSRange", "Member[description]"] + - ["Swift.String", "Network.Bonjour.Endpoint", "Member[description]"] + - ["Swift.String", "Network.Bonjour.Endpoint", "Member[domain]"] + - ["Swift.String", "Network.Bonjour.Endpoint", "Member[id]"] + - ["Swift.String", "Network.Bonjour.Endpoint", "Member[name]"] + - ["Swift.String", "Network.Bonjour.Endpoint", "Member[type]"] + - ["Swift.String", "Network.IPv4Address", "Member[debugDescription]"] + - ["Swift.String", "Network.IPv6Address", "Member[debugDescription]"] + - ["Swift.String", "Network.NWBrowser", "Member[debugDescription]"] + - ["Swift.String", "Network.NWBrowser.Result.Metadata", "Member[debugDescription]"] + - ["Swift.String", "Network.NWConnection", "Member[debugDescription]"] + - ["Swift.String", "Network.NWConnection.ContentContext", "Member[identifier]"] + - ["Swift.String", "Network.NWConnection.DataTransferReport", "Member[debugDescription]"] + - ["Swift.String", "Network.NWConnection.EstablishmentReport", "Member[debugDescription]"] + - ["Swift.String", "Network.NWConnectionGroup", "Member[debugDescription]"] + - ["Swift.String", "Network.NWEndpoint", "Member[debugDescription]"] + - ["Swift.String", "Network.NWEndpoint.Host", "Member[debugDescription]"] + - ["Swift.String", "Network.NWEndpoint.Port", "Member[debugDescription]"] + - ["Swift.String", "Network.NWError", "Member[debugDescription]"] + - ["Swift.String", "Network.NWEthernetChannel", "Member[debugDescription]"] + - ["Swift.String", "Network.NWEthernetChannel.EthernetAddress", "Member[debugDescription]"] + - ["Swift.String", "Network.NWInterface", "Member[debugDescription]"] + - ["Swift.String", "Network.NWInterface", "Member[name]"] + - ["Swift.String", "Network.NWListener", "Member[debugDescription]"] + - ["Swift.String", "Network.NWListener.Service", "Member[debugDescription]"] + - ["Swift.String", "Network.NWListener.Service", "Member[domain]"] + - ["Swift.String", "Network.NWListener.Service", "Member[name]"] + - ["Swift.String", "Network.NWListener.Service", "Member[type]"] + - ["Swift.String", "Network.NWParameters", "Member[debugDescription]"] + - ["Swift.String", "Network.NWParameters.PrivacyContext", "Member[debugDescription]"] + - ["Swift.String", "Network.NWPath", "Member[debugDescription]"] + - ["Swift.String", "Network.NWPathMonitor", "Member[debugDescription]"] + - ["Swift.String", "Network.NWProtocolDefinition", "Member[debugDescription]"] + - ["Swift.String", "Network.NWProtocolDefinition", "Member[name]"] + - ["Swift.String", "Network.NWProtocolFramer.Instance", "Member[debugDescription]"] + - ["Swift.String", "Network.NWProtocolFramerImplementation.Type", "Member[label]"] + - ["Swift.String", "Network.NWProtocolQUIC.ApplicationError", "Member[reason]"] + - ["Swift.String", "Network.NWProtocolQUIC.Metadata", "Member[negotiatedALPN]"] + - ["Swift.String", "Network.NWProtocolWebSocket.Metadata", "Member[selectedSubprotocol]"] + - ["Swift.String", "Network.NWProtocolWebSocket.Response", "Member[subprotocol]"] + - ["Swift.String", "Network.NWTXTRecord", "Member[debugDescription]"] + - ["Swift.String", "Network.NWTXTRecord.Entry", "Member[debugDescription]"] + - ["Swift.String", "Network.NetworkBrowser", "Member[debugDescription]"] + - ["Swift.String", "Network.NetworkChannel", "Member[debugDescription]"] + - ["Swift.String", "Network.NetworkChannel", "Member[id]"] + - ["Swift.String", "Network.NetworkChannel", "Member[startSend].Argument[handler:].Parameter[0].Parameter[0]"] + - ["Swift.String", "Network.NetworkConnection", "Member[negotiatedALPN]"] + - ["Swift.String", "Network.NetworkListener", "Member[debugDescription]"] + - ["Swift.String", "Network.ProxyConfiguration", "Member[debugDescription]"] + - ["Swift.String", "Network.ProxyConfiguration.RelayHop", "Member[debugDescription]"] + - ["Swift.String", "Swift", "Member[readLine].ReturnValue"] + - ["Swift.String", "Swift.AnyHashable", "Member[debugDescription]"] + - ["Swift.String", "Swift.AnyHashable", "Member[description]"] + - ["Swift.String", "Swift.AnyKeyPath", "Member[debugDescription]"] + - ["Swift.String", "Swift.Array", "Member[debugDescription]"] + - ["Swift.String", "Swift.Array", "Member[description]"] + - ["Swift.String", "Swift.ArraySlice", "Member[debugDescription]"] + - ["Swift.String", "Swift.ArraySlice", "Member[description]"] + - ["Swift.String", "Swift.BidirectionalCollection", "Member[joined].ReturnValue"] + - ["Swift.String", "Swift.BinaryFloatingPoint", "Member[formatted].ReturnValue"] + - ["Swift.String", "Swift.BinaryInteger", "Member[description]"] + - ["Swift.String", "Swift.BinaryInteger", "Member[formatted].ReturnValue"] + - ["Swift.String", "Swift.Bool", "Member[description]"] + - ["Swift.String", "Swift.CVaListPointer", "Member[debugDescription]"] + - ["Swift.String", "Swift.Character", "Member[debugDescription]"] + - ["Swift.String", "Swift.Character", "Member[description]"] + - ["Swift.String", "Swift.Character", "Member[lowercased].ReturnValue"] + - ["Swift.String", "Swift.Character", "Member[uppercased].ReturnValue"] + - ["Swift.String", "Swift.ClosedRange", "Member[debugDescription]"] + - ["Swift.String", "Swift.ClosedRange", "Member[description]"] + - ["Swift.String", "Swift.CodingKey", "Member[debugDescription]"] + - ["Swift.String", "Swift.CodingKey", "Member[description]"] + - ["Swift.String", "Swift.CodingKey", "Member[stringValue]"] + - ["Swift.String", "Swift.CodingUserInfoKey", "Member[rawValue]"] + - ["Swift.String", "Swift.CollectionOfOne", "Member[debugDescription]"] + - ["Swift.String", "Swift.ContiguousArray", "Member[debugDescription]"] + - ["Swift.String", "Swift.ContiguousArray", "Member[description]"] + - ["Swift.String", "Swift.CustomDebugStringConvertible", "Member[debugDescription]"] + - ["Swift.String", "Swift.CustomStringConvertible", "Member[description]"] + - ["Swift.String", "Swift.DecodingError", "Member[debugDescription]"] + - ["Swift.String", "Swift.DecodingError.Context", "Member[debugDescription]"] + - ["Swift.String", "Swift.DefaultStringInterpolation", "Member[description]"] + - ["Swift.String", "Swift.Dictionary", "Member[debugDescription]"] + - ["Swift.String", "Swift.Dictionary", "Member[description]"] + - ["Swift.String", "Swift.Dictionary.Keys", "Member[debugDescription]"] + - ["Swift.String", "Swift.Dictionary.Keys", "Member[description]"] + - ["Swift.String", "Swift.Dictionary.Values", "Member[debugDescription]"] + - ["Swift.String", "Swift.Dictionary.Values", "Member[description]"] + - ["Swift.String", "Swift.DiscontiguousSlice", "Member[description]"] + - ["Swift.String", "Swift.DiscontiguousSlice.Index", "Member[description]"] + - ["Swift.String", "Swift.Double", "Member[debugDescription]"] + - ["Swift.String", "Swift.Double", "Member[description]"] + - ["Swift.String", "Swift.Duration", "Member[description]"] + - ["Swift.String", "Swift.Duration", "Member[formatted].ReturnValue"] + - ["Swift.String", "Swift.Duration.TimeFormatStyle", "Member[format].ReturnValue"] + - ["Swift.String", "Swift.Duration.UnitsFormatStyle", "Member[format].ReturnValue"] + - ["Swift.String", "Swift.EncodingError.Context", "Member[debugDescription]"] + - ["Swift.String", "Swift.Error", "Member[localizedDescription]"] + - ["Swift.String", "Swift.Float", "Member[debugDescription]"] + - ["Swift.String", "Swift.Float", "Member[description]"] + - ["Swift.String", "Swift.Float16", "Member[debugDescription]"] + - ["Swift.String", "Swift.Float16", "Member[description]"] + - ["Swift.String", "Swift.KeyValuePairs", "Member[debugDescription]"] + - ["Swift.String", "Swift.KeyValuePairs", "Member[description]"] + - ["Swift.String", "Swift.KeyedDecodingContainer", "Member[decodeIfPresent].WithoutNamedArgument[configuration].ReturnValue"] + - ["Swift.String", "Swift.KeyedDecodingContainer", "Member[decode].WithoutNamedArgument[configuration].ReturnValue"] + - ["Swift.String", "Swift.KeyedDecodingContainerProtocol", "Member[decodeIfPresent].ReturnValue"] + - ["Swift.String", "Swift.KeyedDecodingContainerProtocol", "Member[decode].ReturnValue"] + - ["Swift.String", "Swift.Mirror", "Member[description]"] + - ["Swift.String", "Swift.ObjectIdentifier", "Member[debugDescription]"] + - ["Swift.String", "Swift.OpaquePointer", "Member[debugDescription]"] + - ["Swift.String", "Swift.Optional", "Member[debugDescription]"] + - ["Swift.String", "Swift.Range", "Member[debugDescription]"] + - ["Swift.String", "Swift.Range", "Member[description]"] + - ["Swift.String", "Swift.Range", "Member[formatted].ReturnValue"] + - ["Swift.String", "Swift.Range", "Member[formatted].WithNamedArgument[date].ReturnValue"] + - ["Swift.String", "Swift.RangeSet", "Member[description]"] + - ["Swift.String", "Swift.RangeSet.Ranges", "Member[description]"] + - ["Swift.String", "Swift.SIMD", "Member[description]"] + - ["Swift.String", "Swift.SIMD16", "Member[debugDescription]"] + - ["Swift.String", "Swift.SIMD2", "Member[debugDescription]"] + - ["Swift.String", "Swift.SIMD3", "Member[debugDescription]"] + - ["Swift.String", "Swift.SIMD32", "Member[debugDescription]"] + - ["Swift.String", "Swift.SIMD4", "Member[debugDescription]"] + - ["Swift.String", "Swift.SIMD64", "Member[debugDescription]"] + - ["Swift.String", "Swift.SIMD8", "Member[debugDescription]"] + - ["Swift.String", "Swift.Sequence", "Member[formatted].ReturnValue"] + - ["Swift.String", "Swift.Sequence", "Member[joined].ReturnValue"] + - ["Swift.String", "Swift.Set", "Member[debugDescription]"] + - ["Swift.String", "Swift.Set", "Member[description]"] + - ["Swift.String", "Swift.StaticBigInt", "Member[debugDescription]"] + - ["Swift.String", "Swift.StaticString", "Member[debugDescription]"] + - ["Swift.String", "Swift.StaticString", "Member[description]"] + - ["Swift.String", "Swift.String", "Member[characters]"] + - ["Swift.String", "Swift.String", "Member[debugDescription]"] + - ["Swift.String", "Swift.String", "Member[description]"] + - ["Swift.String", "Swift.String", "Member[lowercased].ReturnValue"] + - ["Swift.String", "Swift.String", "Member[uppercased].ReturnValue"] + - ["Swift.String", "Swift.String", "Member[withMutableCharacters].Argument[0].Parameter[0]"] + - ["Swift.String", "Swift.String.Encoding", "Member[description]"] + - ["Swift.String", "Swift.String.Encoding", "Member[ianaName]"] + - ["Swift.String", "Swift.String.Index", "Member[debugDescription]"] + - ["Swift.String", "Swift.String.Type", "Member[+].ReturnValue"] + - ["Swift.String", "Swift.String.Type", "Member[localizedName].ReturnValue"] + - ["Swift.String", "Swift.String.Type", "Member[localizedStringWithFormat].ReturnValue"] + - ["Swift.String", "Swift.String.UTF16View", "Member[debugDescription]"] + - ["Swift.String", "Swift.String.UTF16View", "Member[description]"] + - ["Swift.String", "Swift.String.UTF8View", "Member[debugDescription]"] + - ["Swift.String", "Swift.String.UTF8View", "Member[description]"] + - ["Swift.String", "Swift.String.UnicodeScalarView", "Member[debugDescription]"] + - ["Swift.String", "Swift.String.UnicodeScalarView", "Member[description]"] + - ["Swift.String", "Swift.StringProtocol", "Member[addingPercentEncoding].ReturnValue"] + - ["Swift.String", "Swift.StringProtocol", "Member[appendingFormat].ReturnValue"] + - ["Swift.String", "Swift.StringProtocol", "Member[appending].ReturnValue"] + - ["Swift.String", "Swift.StringProtocol", "Member[applyingTransform].ReturnValue"] + - ["Swift.String", "Swift.StringProtocol", "Member[capitalized]"] + - ["Swift.String", "Swift.StringProtocol", "Member[capitalized].WithNamedArgument[with].ReturnValue"] + - ["Swift.String", "Swift.StringProtocol", "Member[commonPrefix].ReturnValue"] + - ["Swift.String", "Swift.StringProtocol", "Member[decomposedStringWithCanonicalMapping]"] + - ["Swift.String", "Swift.StringProtocol", "Member[decomposedStringWithCompatibilityMapping]"] + - ["Swift.String", "Swift.StringProtocol", "Member[enumerateLines].Argument[invoking:].Parameter[0]"] + - ["Swift.String", "Swift.StringProtocol", "Member[enumerateLinguisticTags].Argument[invoking:].Parameter[0]"] + - ["Swift.String", "Swift.StringProtocol", "Member[enumerateSubstrings].Argument[0].Parameter[0]"] + - ["Swift.String", "Swift.StringProtocol", "Member[folding].ReturnValue"] + - ["Swift.String", "Swift.StringProtocol", "Member[localizedCapitalized]"] + - ["Swift.String", "Swift.StringProtocol", "Member[localizedLowercase]"] + - ["Swift.String", "Swift.StringProtocol", "Member[localizedUppercase]"] + - ["Swift.String", "Swift.StringProtocol", "Member[lowercased].ReturnValue"] + - ["Swift.String", "Swift.StringProtocol", "Member[lowercased].WithNamedArgument[with].ReturnValue"] + - ["Swift.String", "Swift.StringProtocol", "Member[padding].ReturnValue"] + - ["Swift.String", "Swift.StringProtocol", "Member[precomposedStringWithCanonicalMapping]"] + - ["Swift.String", "Swift.StringProtocol", "Member[precomposedStringWithCompatibilityMapping]"] + - ["Swift.String", "Swift.StringProtocol", "Member[removingPercentEncoding]"] + - ["Swift.String", "Swift.StringProtocol", "Member[replacingCharacters].ReturnValue"] + - ["Swift.String", "Swift.StringProtocol", "Member[replacingOccurrences].ReturnValue"] + - ["Swift.String", "Swift.StringProtocol", "Member[substring].WithNamedArgument[from].ReturnValue"] + - ["Swift.String", "Swift.StringProtocol", "Member[substring].WithNamedArgument[to].ReturnValue"] + - ["Swift.String", "Swift.StringProtocol", "Member[substring].WithNamedArgument[with].ReturnValue"] + - ["Swift.String", "Swift.StringProtocol", "Member[trimmingCharacters].ReturnValue"] + - ["Swift.String", "Swift.StringProtocol", "Member[uppercased].ReturnValue"] + - ["Swift.String", "Swift.StringProtocol", "Member[uppercased].WithNamedArgument[with].ReturnValue"] + - ["Swift.String", "Swift.Substring", "Member[base]"] + - ["Swift.String", "Swift.Substring", "Member[debugDescription]"] + - ["Swift.String", "Swift.Substring", "Member[description]"] + - ["Swift.String", "Swift.Substring", "Member[filter].ReturnValue"] + - ["Swift.String", "Swift.Substring", "Member[lowercased].ReturnValue"] + - ["Swift.String", "Swift.Substring", "Member[uppercased].ReturnValue"] + - ["Swift.String", "Swift.Unicode.Scalar", "Member[debugDescription]"] + - ["Swift.String", "Swift.Unicode.Scalar", "Member[description]"] + - ["Swift.String", "Swift.Unicode.Scalar", "Member[escaped].ReturnValue"] + - ["Swift.String", "Swift.Unicode.Scalar.Properties", "Member[lowercaseMapping]"] + - ["Swift.String", "Swift.Unicode.Scalar.Properties", "Member[nameAlias]"] + - ["Swift.String", "Swift.Unicode.Scalar.Properties", "Member[name]"] + - ["Swift.String", "Swift.Unicode.Scalar.Properties", "Member[titlecaseMapping]"] + - ["Swift.String", "Swift.Unicode.Scalar.Properties", "Member[uppercaseMapping]"] + - ["Swift.String", "Swift.Unicode.UTF8.ValidationError", "Member[description]"] + - ["Swift.String", "Swift.Unicode.UTF8.ValidationError.Kind", "Member[description]"] + - ["Swift.String", "Swift.Unicode._CharacterRecognizer", "Member[description]"] + - ["Swift.String", "Swift.UniqueArray", "Member[debugDescription]"] + - ["Swift.String", "Swift.UniqueArray", "Member[description]"] + - ["Swift.String", "Swift.UnsafeBufferPointer", "Member[debugDescription]"] + - ["Swift.String", "Swift.UnsafeMutableBufferPointer", "Member[debugDescription]"] + - ["Swift.String", "Swift.UnsafeMutableRawBufferPointer", "Member[debugDescription]"] + - ["Swift.String", "Swift.UnsafeRawBufferPointer", "Member[debugDescription]"] + - ["Swift.String", "Swift._Pointer", "Member[debugDescription]"] + - ["Swift.String", "System.Errno", "Member[debugDescription]"] + - ["Swift.String", "System.Errno", "Member[description]"] + - ["Swift.String", "System.FileDescriptor.AccessMode", "Member[debugDescription]"] + - ["Swift.String", "System.FileDescriptor.AccessMode", "Member[description]"] + - ["Swift.String", "System.FileDescriptor.OpenOptions", "Member[debugDescription]"] + - ["Swift.String", "System.FileDescriptor.OpenOptions", "Member[description]"] + - ["Swift.String", "System.FileDescriptor.SeekOrigin", "Member[debugDescription]"] + - ["Swift.String", "System.FileDescriptor.SeekOrigin", "Member[description]"] + - ["Swift.String", "System.FilePath", "Member[debugDescription]"] + - ["Swift.String", "System.FilePath", "Member[description]"] + - ["Swift.String", "System.FilePath", "Member[extension]"] + - ["Swift.String", "System.FilePath", "Member[stem]"] + - ["Swift.String", "System.FilePath", "Member[string]"] + - ["Swift.String", "System.FilePath.Component", "Member[debugDescription]"] + - ["Swift.String", "System.FilePath.Component", "Member[description]"] + - ["Swift.String", "System.FilePath.Component", "Member[extension]"] + - ["Swift.String", "System.FilePath.Component", "Member[stem]"] + - ["Swift.String", "System.FilePath.Component", "Member[string]"] + - ["Swift.String", "System.FilePath.Root", "Member[debugDescription]"] + - ["Swift.String", "System.FilePath.Root", "Member[description]"] + - ["Swift.String", "System.FilePath.Root", "Member[string]"] + - ["Swift.String", "System.FilePermissions", "Member[debugDescription]"] + - ["Swift.String", "System.FilePermissions", "Member[description]"] + - ["Swift.String", "UIKit.NSDiffableDataSourceSectionSnapshot", "Member[visualDescription].ReturnValue"] + - ["Swift.String", "UIKit.UIAccessibility.AnnouncementDidFinishMessage", "Member[announcement]"] + - ["Swift.String", "UIKit.UIApplication.Type", "Member[openNotificationSettingsURLString]"] + - ["Swift.String", "UIKit.UIBackgroundConfiguration", "Member[debugDescription]"] + - ["Swift.String", "UIKit.UIBackgroundConfiguration", "Member[description]"] + - ["Swift.String", "UIKit.UIBarButtonItem.Badge", "Member[stringValue]"] + - ["Swift.String", "UIKit.UIButton.Configuration", "Member[subtitle]"] + - ["Swift.String", "UIKit.UIButton.Configuration", "Member[title]"] + - ["Swift.String", "UIKit.UICellConfigurationState", "Member[debugDescription]"] + - ["Swift.String", "UIKit.UICellConfigurationState", "Member[description]"] + - ["Swift.String", "UIKit.UICollectionViewDiffableDataSource", "Member[description].ReturnValue"] + - ["Swift.String", "UIKit.UIContentSizeCategory.DidChangeMessage", "Member[contentSize]"] + - ["Swift.String", "UIKit.UIContentUnavailableConfiguration", "Member[debugDescription]"] + - ["Swift.String", "UIKit.UIContentUnavailableConfiguration", "Member[description]"] + - ["Swift.String", "UIKit.UIContentUnavailableConfiguration", "Member[secondaryText]"] + - ["Swift.String", "UIKit.UIContentUnavailableConfiguration", "Member[text]"] + - ["Swift.String", "UIKit.UIContentUnavailableConfiguration.ButtonProperties", "Member[debugDescription]"] + - ["Swift.String", "UIKit.UIContentUnavailableConfiguration.ButtonProperties", "Member[description]"] + - ["Swift.String", "UIKit.UIContentUnavailableConfiguration.ImageProperties", "Member[debugDescription]"] + - ["Swift.String", "UIKit.UIContentUnavailableConfiguration.ImageProperties", "Member[description]"] + - ["Swift.String", "UIKit.UIContentUnavailableConfiguration.TextProperties", "Member[debugDescription]"] + - ["Swift.String", "UIKit.UIContentUnavailableConfiguration.TextProperties", "Member[description]"] + - ["Swift.String", "UIKit.UIContentUnavailableConfigurationState", "Member[debugDescription]"] + - ["Swift.String", "UIKit.UIContentUnavailableConfigurationState", "Member[description]"] + - ["Swift.String", "UIKit.UIContentUnavailableConfigurationState", "Member[searchText]"] + - ["Swift.String", "UIKit.UICornerConfiguration", "Member[description]"] + - ["Swift.String", "UIKit.UICornerCurve", "Member[debugDescription]"] + - ["Swift.String", "UIKit.UICornerCurve", "Member[description]"] + - ["Swift.String", "UIKit.UICornerRadius", "Member[description]"] + - ["Swift.String", "UIKit.UIListContentConfiguration", "Member[debugDescription]"] + - ["Swift.String", "UIKit.UIListContentConfiguration", "Member[description]"] + - ["Swift.String", "UIKit.UIListContentConfiguration", "Member[secondaryText]"] + - ["Swift.String", "UIKit.UIListContentConfiguration", "Member[text]"] + - ["Swift.String", "UIKit.UIListContentConfiguration.ImageProperties", "Member[debugDescription]"] + - ["Swift.String", "UIKit.UIListContentConfiguration.ImageProperties", "Member[description]"] + - ["Swift.String", "UIKit.UIListContentConfiguration.TextProperties", "Member[debugDescription]"] + - ["Swift.String", "UIKit.UIListContentConfiguration.TextProperties", "Member[description]"] + - ["Swift.String", "UIKit.UIListSeparatorConfiguration", "Member[debugDescription]"] + - ["Swift.String", "UIKit.UIListSeparatorConfiguration", "Member[description]"] + - ["Swift.String", "UIKit.UIPasteboard.DetectedValues", "Member[probableWebSearch]"] + - ["Swift.String", "UIKit.UIPasteboard.DetectedValues", "Member[probableWebURL]"] + - ["Swift.String", "UIKit.UIScene.DestructionCondition", "Member[description]"] + - ["Swift.String", "UIKit.UIShadowProperties", "Member[debugDescription]"] + - ["Swift.String", "UIKit.UIShadowProperties", "Member[description]"] + - ["Swift.String", "UIKit.UIShape", "Member[debugDescription]"] + - ["Swift.String", "UIKit.UIShape", "Member[description]"] + - ["Swift.String", "UIKit.UIShape.Resolved", "Member[debugDescription]"] + - ["Swift.String", "UIKit.UIShape.Resolved", "Member[description]"] + - ["Swift.String", "UIKit.UISlider.TrackConfiguration.Tick", "Member[title]"] + - ["Swift.String", "UIKit.UITableViewDiffableDataSource", "Member[description].ReturnValue"] + - ["Swift.String", "UIKit.UITableViewDiffableDataSource", "Member[tableView].WithNamedArgument[titleForFooterInSection].ReturnValue"] + - ["Swift.String", "UIKit.UITableViewDiffableDataSource", "Member[tableView].WithNamedArgument[titleForHeaderInSection].ReturnValue"] + - ["Swift.String", "UIKit.UITextFormattingViewController.FormattingDescriptor", "Member[formattingStyleKey]"] + - ["Swift.String", "UIKit.UITextFormattingViewController.FormattingStyle", "Member[styleKey]"] + - ["Swift.String", "UIKit.UITraitAccessibilityContrast.Type", "Member[identifier]"] + - ["Swift.String", "UIKit.UITraitAccessibilityContrast.Type", "Member[name]"] + - ["Swift.String", "UIKit.UITraitActiveAppearance.Type", "Member[identifier]"] + - ["Swift.String", "UIKit.UITraitActiveAppearance.Type", "Member[name]"] + - ["Swift.String", "UIKit.UITraitDefinition.Type", "Member[identifier]"] + - ["Swift.String", "UIKit.UITraitDefinition.Type", "Member[name]"] + - ["Swift.String", "UIKit.UITraitDisplayGamut.Type", "Member[identifier]"] + - ["Swift.String", "UIKit.UITraitDisplayGamut.Type", "Member[name]"] + - ["Swift.String", "UIKit.UITraitDisplayScale.Type", "Member[identifier]"] + - ["Swift.String", "UIKit.UITraitDisplayScale.Type", "Member[name]"] + - ["Swift.String", "UIKit.UITraitForceTouchCapability.Type", "Member[identifier]"] + - ["Swift.String", "UIKit.UITraitForceTouchCapability.Type", "Member[name]"] + - ["Swift.String", "UIKit.UITraitHDRHeadroomUsageLimit.Type", "Member[identifier]"] + - ["Swift.String", "UIKit.UITraitHDRHeadroomUsageLimit.Type", "Member[name]"] + - ["Swift.String", "UIKit.UITraitHorizontalSizeClass.Type", "Member[identifier]"] + - ["Swift.String", "UIKit.UITraitHorizontalSizeClass.Type", "Member[name]"] + - ["Swift.String", "UIKit.UITraitImageDynamicRange.Type", "Member[identifier]"] + - ["Swift.String", "UIKit.UITraitImageDynamicRange.Type", "Member[name]"] + - ["Swift.String", "UIKit.UITraitLayoutDirection.Type", "Member[identifier]"] + - ["Swift.String", "UIKit.UITraitLayoutDirection.Type", "Member[name]"] + - ["Swift.String", "UIKit.UITraitLegibilityWeight.Type", "Member[identifier]"] + - ["Swift.String", "UIKit.UITraitLegibilityWeight.Type", "Member[name]"] + - ["Swift.String", "UIKit.UITraitListEnvironment.Type", "Member[identifier]"] + - ["Swift.String", "UIKit.UITraitListEnvironment.Type", "Member[name]"] + - ["Swift.String", "UIKit.UITraitOverrides", "Member[debugDescription]"] + - ["Swift.String", "UIKit.UITraitOverrides", "Member[description]"] + - ["Swift.String", "UIKit.UITraitPreferredContentSizeCategory.Type", "Member[identifier]"] + - ["Swift.String", "UIKit.UITraitPreferredContentSizeCategory.Type", "Member[name]"] + - ["Swift.String", "UIKit.UITraitResolvesNaturalAlignmentWithBaseWritingDirection.Type", "Member[identifier]"] + - ["Swift.String", "UIKit.UITraitResolvesNaturalAlignmentWithBaseWritingDirection.Type", "Member[name]"] + - ["Swift.String", "UIKit.UITraitSceneCaptureState.Type", "Member[identifier]"] + - ["Swift.String", "UIKit.UITraitSceneCaptureState.Type", "Member[name]"] + - ["Swift.String", "UIKit.UITraitSplitViewControllerLayoutEnvironment.Type", "Member[identifier]"] + - ["Swift.String", "UIKit.UITraitSplitViewControllerLayoutEnvironment.Type", "Member[name]"] + - ["Swift.String", "UIKit.UITraitSystemPrefersReducedResourceUsage.Type", "Member[identifier]"] + - ["Swift.String", "UIKit.UITraitSystemPrefersReducedResourceUsage.Type", "Member[name]"] + - ["Swift.String", "UIKit.UITraitTabAccessoryEnvironment.Type", "Member[identifier]"] + - ["Swift.String", "UIKit.UITraitTabAccessoryEnvironment.Type", "Member[name]"] + - ["Swift.String", "UIKit.UITraitToolbarItemPresentationSize.Type", "Member[identifier]"] + - ["Swift.String", "UIKit.UITraitToolbarItemPresentationSize.Type", "Member[name]"] + - ["Swift.String", "UIKit.UITraitTypesettingLanguage.Type", "Member[identifier]"] + - ["Swift.String", "UIKit.UITraitTypesettingLanguage.Type", "Member[name]"] + - ["Swift.String", "UIKit.UITraitUserInterfaceIdiom.Type", "Member[identifier]"] + - ["Swift.String", "UIKit.UITraitUserInterfaceIdiom.Type", "Member[name]"] + - ["Swift.String", "UIKit.UITraitUserInterfaceLevel.Type", "Member[identifier]"] + - ["Swift.String", "UIKit.UITraitUserInterfaceLevel.Type", "Member[name]"] + - ["Swift.String", "UIKit.UITraitUserInterfaceStyle.Type", "Member[identifier]"] + - ["Swift.String", "UIKit.UITraitUserInterfaceStyle.Type", "Member[name]"] + - ["Swift.String", "UIKit.UITraitVerticalSizeClass.Type", "Member[identifier]"] + - ["Swift.String", "UIKit.UITraitVerticalSizeClass.Type", "Member[name]"] + - ["Swift.String", "UIKit.UIViewConfigurationState", "Member[debugDescription]"] + - ["Swift.String", "UIKit.UIViewConfigurationState", "Member[description]"] + - ["Swift.String", "WebKit.URLScheme", "Member[rawValue]"] + - ["Swift.String", "WebKit.WebPage", "Member[customUserAgent]"] + - ["Swift.String", "WebKit.WebPage", "Member[title]"] + - ["Swift.String", "WebKit.WebPage.BackForwardList.Item", "Member[title]"] + - ["Swift.String", "WebKit.WebPage.CSSMediaType", "Member[rawValue]"] + - ["Swift.String", "WebKit.WebPage.Configuration", "Member[applicationNameForUserAgent]"] + - ["Swift.String", "WebKit.WebPage.FormInfo", "Member[httpMethod]"] + - ["Swift.String", "WebKit.WebPage.NavigationPreferences", "Member[overrideReferrer]"] + - ["Swift.String", "_StringProcessing.AnyRegexOutput.Element", "Member[name]"] + - ["Swift.String", "os.OSLog.Category", "Member[rawValue]"] + - ["Swift.StringProtocol", "Foundation.AttributeScopes.FoundationAttributes.PersonNameComponentAttribute.Component", ""] + - ["Swift.StringProtocol", "Foundation.Date.ISO8601FormatStyle.DateSeparator", ""] + - ["Swift.StringProtocol", "Foundation.Date.ISO8601FormatStyle.DateTimeSeparator", ""] + - ["Swift.StringProtocol", "Foundation.Date.ISO8601FormatStyle.TimeSeparator", ""] + - ["Swift.StringProtocol", "Foundation.Date.ISO8601FormatStyle.TimeZoneSeparator", ""] + - ["Swift.StringProtocol", "Foundation.Locale.HourCycle", ""] + - ["Swift.StringProtocol", "Foundation.Locale.Weekday", ""] + - ["Swift.StringProtocol", "Swift.String", ""] + - ["Swift.StringProtocol", "Swift.Substring", ""] + - ["Swift.Substring", "Swift.Substring", "Member[characters]"] + - ["Swift.Substring", "Swift.Substring", "Member[withMutableCharacters].Argument[0].Parameter[0]"] + - ["Swift.Substring", "_StringProcessing.AnyRegexOutput.Element", "Member[substring]"] + - ["Swift.TextOutputStream", "Foundation.AttributeScopes.FoundationAttributes.PersonNameComponentAttribute.Component", ""] + - ["Swift.TextOutputStream", "Foundation.Date.ISO8601FormatStyle.DateSeparator", ""] + - ["Swift.TextOutputStream", "Foundation.Date.ISO8601FormatStyle.DateTimeSeparator", ""] + - ["Swift.TextOutputStream", "Foundation.Date.ISO8601FormatStyle.TimeSeparator", ""] + - ["Swift.TextOutputStream", "Foundation.Date.ISO8601FormatStyle.TimeZoneSeparator", ""] + - ["Swift.TextOutputStream", "Foundation.Locale.HourCycle", ""] + - ["Swift.TextOutputStream", "Foundation.Locale.Weekday", ""] + - ["Swift.TextOutputStream", "Swift.DefaultStringInterpolation", ""] + - ["Swift.TextOutputStream", "Swift.String", ""] + - ["Swift.TextOutputStream", "Swift.StringProtocol", ""] + - ["Swift.TextOutputStream", "Swift.Substring", ""] + - ["Swift.TextOutputStreamable", "Foundation.AttributeScopes.FoundationAttributes.PersonNameComponentAttribute.Component", ""] + - ["Swift.TextOutputStreamable", "Foundation.Date.ISO8601FormatStyle.DateSeparator", ""] + - ["Swift.TextOutputStreamable", "Foundation.Date.ISO8601FormatStyle.DateTimeSeparator", ""] + - ["Swift.TextOutputStreamable", "Foundation.Date.ISO8601FormatStyle.TimeSeparator", ""] + - ["Swift.TextOutputStreamable", "Foundation.Date.ISO8601FormatStyle.TimeZoneSeparator", ""] + - ["Swift.TextOutputStreamable", "Foundation.Locale.HourCycle", ""] + - ["Swift.TextOutputStreamable", "Foundation.Locale.Weekday", ""] + - ["Swift.TextOutputStreamable", "Swift.Character", ""] + - ["Swift.TextOutputStreamable", "Swift.Double", ""] + - ["Swift.TextOutputStreamable", "Swift.Float", ""] + - ["Swift.TextOutputStreamable", "Swift.Float16", ""] + - ["Swift.TextOutputStreamable", "Swift.String", ""] + - ["Swift.TextOutputStreamable", "Swift.StringProtocol", ""] + - ["Swift.TextOutputStreamable", "Swift.Substring", ""] + - ["Swift.TextOutputStreamable", "Swift.Unicode.Scalar", ""] + - ["Swift.UnsafeBufferPointer", "AppleArchive.ArchiveHeader", "Member[withAAEncodedData].Argument[0].Parameter[0]"] + - ["Swift.UnsafeBufferPointer", "AppleArchive.ArchiveHeader.EntryXATBlob", "Member[withAAEncodedData].Argument[0].Parameter[0]"] + - ["Swift.UnsafeBufferPointer", "AppleArchive._AAEncodableProtocol", "Member[withAAEncodedData].Argument[0].Parameter[0]"] + - ["Swift.UnsafeBufferPointer", "Foundation.Data", "Member[enumerateBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeBufferPointer", "Swift.Array", "Member[withContiguousStorageIfAvailable].Argument[0].Parameter[0]"] + - ["Swift.UnsafeBufferPointer", "Swift.Array", "Member[withUnsafeBufferPointer].Argument[0].Parameter[0]"] + - ["Swift.UnsafeBufferPointer", "Swift.ArraySlice", "Member[withContiguousStorageIfAvailable].Argument[0].Parameter[0]"] + - ["Swift.UnsafeBufferPointer", "Swift.ArraySlice", "Member[withUnsafeBufferPointer].Argument[0].Parameter[0]"] + - ["Swift.UnsafeBufferPointer", "Swift.CollectionOfOne", "Member[withContiguousStorageIfAvailable].Argument[0].Parameter[0]"] + - ["Swift.UnsafeBufferPointer", "Swift.ContiguousArray", "Member[withContiguousStorageIfAvailable].Argument[0].Parameter[0]"] + - ["Swift.UnsafeBufferPointer", "Swift.ContiguousArray", "Member[withUnsafeBufferPointer].Argument[0].Parameter[0]"] + - ["Swift.UnsafeBufferPointer", "Swift.EmptyCollection", "Member[withContiguousStorageIfAvailable].Argument[0].Parameter[0]"] + - ["Swift.UnsafeBufferPointer", "Swift.MutableSpan", "Member[withUnsafeBufferPointer].Argument[0].Parameter[0]"] + - ["Swift.UnsafeBufferPointer", "Swift.Sequence", "Member[withContiguousStorageIfAvailable].Argument[0].Parameter[0]"] + - ["Swift.UnsafeBufferPointer", "Swift.Slice", "Member[assumingMemoryBound].ReturnValue"] + - ["Swift.UnsafeBufferPointer", "Swift.Slice", "Member[bindMemory].ReturnValue"] + - ["Swift.UnsafeBufferPointer", "Swift.Slice", "Member[withContiguousStorageIfAvailable].Argument[0].Parameter[0]"] + - ["Swift.UnsafeBufferPointer", "Swift.Slice", "Member[withMemoryRebound].Argument[0].Parameter[0]"] + - ["Swift.UnsafeBufferPointer", "Swift.Span", "Member[withUnsafeBufferPointer].Argument[0].Parameter[0]"] + - ["Swift.UnsafeBufferPointer", "Swift.StaticString", "Member[withUTF8Buffer].Argument[0].Parameter[0]"] + - ["Swift.UnsafeBufferPointer", "Swift.String", "Member[withUTF8].Argument[0].Parameter[0]"] + - ["Swift.UnsafeBufferPointer", "Swift.String.UTF8View", "Member[withContiguousStorageIfAvailable].Argument[0].Parameter[0]"] + - ["Swift.UnsafeBufferPointer", "Swift.Substring", "Member[withUTF8].Argument[0].Parameter[0]"] + - ["Swift.UnsafeBufferPointer", "Swift.Substring.UTF8View", "Member[withContiguousStorageIfAvailable].Argument[0].Parameter[0]"] + - ["Swift.UnsafeBufferPointer", "Swift.UnsafeBufferPointer", "Member[extracting].ReturnValue"] + - ["Swift.UnsafeBufferPointer", "Swift.UnsafeBufferPointer", "Member[withContiguousStorageIfAvailable].Argument[0].Parameter[0]"] + - ["Swift.UnsafeBufferPointer", "Swift.UnsafeBufferPointer", "Member[withMemoryRebound].Argument[0].Parameter[0]"] + - ["Swift.UnsafeBufferPointer", "Swift.UnsafeMutableBufferPointer", "Member[withContiguousStorageIfAvailable].Argument[0].Parameter[0]"] + - ["Swift.UnsafeBufferPointer", "Swift.UnsafeMutableRawBufferPointer", "Member[withContiguousStorageIfAvailable].Argument[0].Parameter[0]"] + - ["Swift.UnsafeBufferPointer", "Swift.UnsafeRawBufferPointer", "Member[assumingMemoryBound].ReturnValue"] + - ["Swift.UnsafeBufferPointer", "Swift.UnsafeRawBufferPointer", "Member[bindMemory].ReturnValue"] + - ["Swift.UnsafeBufferPointer", "Swift.UnsafeRawBufferPointer", "Member[withContiguousStorageIfAvailable].Argument[0].Parameter[0]"] + - ["Swift.UnsafeBufferPointer", "Swift.UnsafeRawBufferPointer", "Member[withMemoryRebound].Argument[0].Parameter[0]"] + - ["Swift.UnsafeMutableBufferPointer", "Swift", "Member[withUnsafeTemporaryAllocation].WithNamedArgument[capacity].Argument[0].Parameter[0]"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.Array", "Member[withContiguousMutableStorageIfAvailable].Argument[0].Parameter[0]"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.Array", "Member[withUnsafeMutableBufferPointer].Argument[0].Parameter[0]"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.Array.Type", "Member[init].WithNamedArgument[initializingWith].WithNamedArgument[unsafeUninitializedCapacity].Argument[initializingWith:].Parameter[0]"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.ArraySlice", "Member[withContiguousMutableStorageIfAvailable].Argument[0].Parameter[0]"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.ArraySlice", "Member[withUnsafeMutableBufferPointer].Argument[0].Parameter[0]"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.ContiguousArray", "Member[withContiguousMutableStorageIfAvailable].Argument[0].Parameter[0]"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.ContiguousArray", "Member[withUnsafeMutableBufferPointer].Argument[0].Parameter[0]"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.ContiguousArray.Type", "Member[init].WithNamedArgument[initializingWith].WithNamedArgument[unsafeUninitializedCapacity].Argument[initializingWith:].Parameter[0]"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.Dictionary.Type", "Member[init].WithNamedArgument[_unsafeUninitializedCapacity].Argument[initializingWith:].Parameter[0]"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.Dictionary.Type", "Member[init].WithNamedArgument[_unsafeUninitializedCapacity].Argument[initializingWith:].Parameter[1]"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.MutableCollection", "Member[withContiguousMutableStorageIfAvailable].Argument[0].Parameter[0]"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.Slice", "Member[assumingMemoryBound].ReturnValue"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.Slice", "Member[bindMemory].ReturnValue"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.Slice", "Member[initializeMemory].WithNamedArgument[fromContentsOf].ReturnValue"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.Slice", "Member[initializeMemory].WithNamedArgument[repeating].ReturnValue"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.Slice", "Member[moveInitializeMemory].ReturnValue"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.Slice", "Member[withContiguousMutableStorageIfAvailable].Argument[0].Parameter[0]"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.Slice", "Member[withMemoryRebound].Argument[0].Parameter[0]"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.String.Type", "Member[init].WithNamedArgument[initializingUTF8With].Argument[initializingUTF8With:].Parameter[0]"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.UnsafeMutableBufferPointer", "Member[extracting].ReturnValue"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.UnsafeMutableBufferPointer", "Member[withContiguousMutableStorageIfAvailable].Argument[0].Parameter[0]"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.UnsafeMutableBufferPointer", "Member[withMemoryRebound].Argument[0].Parameter[0]"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.UnsafeMutableBufferPointer.Type", "Member[allocate].ReturnValue"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.UnsafeMutableRawBufferPointer", "Member[assumingMemoryBound].ReturnValue"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.UnsafeMutableRawBufferPointer", "Member[bindMemory].ReturnValue"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.UnsafeMutableRawBufferPointer", "Member[initializeMemory].WithNamedArgument[fromContentsOf].ReturnValue"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.UnsafeMutableRawBufferPointer", "Member[initializeMemory].WithNamedArgument[repeating].ReturnValue"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.UnsafeMutableRawBufferPointer", "Member[moveInitializeMemory].ReturnValue"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.UnsafeMutableRawBufferPointer", "Member[withContiguousMutableStorageIfAvailable].Argument[0].Parameter[0]"] + - ["Swift.UnsafeMutableBufferPointer", "Swift.UnsafeMutableRawBufferPointer", "Member[withMemoryRebound].Argument[0].Parameter[0]"] + - ["Swift.UnsafeMutablePointer", "Foundation.Data", "Member[withUnsafeMutableBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeMutablePointer", "Swift.CommandLine.Type", "Member[unsafeArgv]"] + - ["Swift.UnsafeMutablePointer", "Swift.ManagedBuffer", "Member[withUnsafeMutablePointerToElements].Argument[0].Parameter[0]"] + - ["Swift.UnsafeMutablePointer", "Swift.ManagedBuffer", "Member[withUnsafeMutablePointerToHeader].Argument[0].Parameter[0]"] + - ["Swift.UnsafeMutablePointer", "Swift.ManagedBuffer", "Member[withUnsafeMutablePointers].Argument[0].Parameter[0]"] + - ["Swift.UnsafeMutablePointer", "Swift.ManagedBuffer", "Member[withUnsafeMutablePointers].Argument[0].Parameter[1]"] + - ["Swift.UnsafeMutablePointer", "Swift.ManagedBufferPointer", "Member[withUnsafeMutablePointerToElements].Argument[0].Parameter[0]"] + - ["Swift.UnsafeMutablePointer", "Swift.ManagedBufferPointer", "Member[withUnsafeMutablePointerToHeader].Argument[0].Parameter[0]"] + - ["Swift.UnsafeMutablePointer", "Swift.ManagedBufferPointer", "Member[withUnsafeMutablePointers].Argument[0].Parameter[0]"] + - ["Swift.UnsafeMutablePointer", "Swift.ManagedBufferPointer", "Member[withUnsafeMutablePointers].Argument[0].Parameter[1]"] + - ["Swift.UnsafeMutablePointer", "Swift.UnsafeMutableBufferPointer", "Member[baseAddress]"] + - ["Swift.UnsafeMutablePointer", "Swift.UnsafeMutablePointer", "Member[pointer].ReturnValue"] + - ["Swift.UnsafeMutablePointer", "Swift.UnsafeMutablePointer", "Member[withMemoryRebound].Argument[0].Parameter[0]"] + - ["Swift.UnsafeMutablePointer", "Swift.UnsafeMutablePointer.Type", "Member[allocate].ReturnValue"] + - ["Swift.UnsafeMutablePointer", "Swift.UnsafeMutableRawPointer", "Member[assumingMemoryBound].ReturnValue"] + - ["Swift.UnsafeMutablePointer", "Swift.UnsafeMutableRawPointer", "Member[bindMemory].ReturnValue"] + - ["Swift.UnsafeMutablePointer", "Swift.UnsafeMutableRawPointer", "Member[initializeMemory].WithNamedArgument[count].WithNamedArgument[from].ReturnValue"] + - ["Swift.UnsafeMutablePointer", "Swift.UnsafeMutableRawPointer", "Member[initializeMemory].WithNamedArgument[count].WithNamedArgument[repeating].ReturnValue"] + - ["Swift.UnsafeMutablePointer", "Swift.UnsafeMutableRawPointer", "Member[initializeMemory].WithNamedArgument[from].WithoutNamedArgument[count].ReturnValue"] + - ["Swift.UnsafeMutablePointer", "Swift.UnsafeMutableRawPointer", "Member[initializeMemory].WithNamedArgument[to].ReturnValue"] + - ["Swift.UnsafeMutablePointer", "Swift.UnsafeMutableRawPointer", "Member[moveInitializeMemory].ReturnValue"] + - ["Swift.UnsafeMutablePointer", "Swift.UnsafeMutableRawPointer", "Member[withMemoryRebound].Argument[0].Parameter[0]"] + - ["Swift.UnsafeMutablePointer", "Swift._StringGuts", "Member[startASCII]"] + - ["Swift.UnsafeMutableRawBufferPointer", "Network.NWProtocolFramer.Instance", "Member[parseInput].Argument[parse:].Parameter[0]"] + - ["Swift.UnsafeMutableRawBufferPointer", "Network.NWProtocolFramer.Instance", "Member[parseOutput].Argument[parse:].Parameter[0]"] + - ["Swift.UnsafeMutableRawBufferPointer", "Swift", "Member[withUnsafeTemporaryAllocation].WithNamedArgument[alignment].Argument[0].Parameter[0]"] + - ["Swift.UnsafeMutableRawBufferPointer", "Swift.Array", "Member[withUnsafeMutableBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeMutableRawBufferPointer", "Swift.ArraySlice", "Member[withUnsafeMutableBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeMutableRawBufferPointer", "Swift.ContiguousArray", "Member[withUnsafeMutableBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeMutableRawBufferPointer", "Swift.Slice", "Member[deinitialize].ReturnValue"] + - ["Swift.UnsafeMutableRawBufferPointer", "Swift.UnsafeMutableBufferPointer", "Member[deinitialize].ReturnValue"] + - ["Swift.UnsafeMutableRawBufferPointer", "Swift.UnsafeMutableRawBufferPointer.Type", "Member[allocate].WithNamedArgument[alignment].ReturnValue"] + - ["Swift.UnsafeMutableRawBufferPointer", "Swift.UnsafeMutableRawBufferPointer.Type", "Member[allocate].WithNamedArgument[count].ReturnValue"] + - ["Swift.UnsafeMutableRawPointer", "Swift.Unmanaged", "Member[toOpaque].ReturnValue"] + - ["Swift.UnsafeMutableRawPointer", "Swift.UnsafeMutablePointer", "Member[deinitialize].ReturnValue"] + - ["Swift.UnsafeMutableRawPointer", "Swift.UnsafeMutablePointer", "Member[deinitialize].WithNamedArgument[count].ReturnValue"] + - ["Swift.UnsafeMutableRawPointer", "Swift.UnsafeMutableRawBufferPointer", "Member[baseAddress]"] + - ["Swift.UnsafeMutableRawPointer", "Swift.UnsafeMutableRawPointer", "Member[advanced].ReturnValue"] + - ["Swift.UnsafeMutableRawPointer", "Swift.UnsafeMutableRawPointer", "Member[alignedDown].WithNamedArgument[for].ReturnValue"] + - ["Swift.UnsafeMutableRawPointer", "Swift.UnsafeMutableRawPointer", "Member[alignedDown].WithNamedArgument[toMultipleOf].ReturnValue"] + - ["Swift.UnsafeMutableRawPointer", "Swift.UnsafeMutableRawPointer", "Member[alignedUp].WithNamedArgument[for].ReturnValue"] + - ["Swift.UnsafeMutableRawPointer", "Swift.UnsafeMutableRawPointer", "Member[alignedUp].WithNamedArgument[toMultipleOf].ReturnValue"] + - ["Swift.UnsafeMutableRawPointer", "Swift.UnsafeMutableRawPointer.Type", "Member[allocate].WithNamedArgument[alignedTo].ReturnValue"] + - ["Swift.UnsafeMutableRawPointer", "Swift.UnsafeMutableRawPointer.Type", "Member[allocate].WithNamedArgument[alignment].ReturnValue"] + - ["Swift.UnsafeMutableRawPointer", "os.WorkGroup", "Member[setWorkingArena].Argument[destruct:].Parameter[0]"] + - ["Swift.UnsafePointer", "Foundation.Data", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafePointer", "Foundation.URL", "Member[withUnsafeFileSystemRepresentation].Argument[0].Parameter[0]"] + - ["Swift.UnsafePointer", "Swift.StaticString", "Member[utf8Start]"] + - ["Swift.UnsafePointer", "Swift.String", "Member[withCString].Argument[0].Parameter[0]"] + - ["Swift.UnsafePointer", "Swift.String", "Member[withCString].WithNamedArgument[encodedAs].Argument[0].Parameter[0]"] + - ["Swift.UnsafePointer", "Swift.String", "Member[withPlatformString].Argument[0].Parameter[0]"] + - ["Swift.UnsafePointer", "Swift.StringProtocol", "Member[withCString].Argument[0].Parameter[0]"] + - ["Swift.UnsafePointer", "Swift.StringProtocol", "Member[withCString].WithNamedArgument[encodedAs].Argument[0].Parameter[0]"] + - ["Swift.UnsafePointer", "Swift.Substring", "Member[withCString].Argument[0].Parameter[0]"] + - ["Swift.UnsafePointer", "Swift.Substring", "Member[withCString].WithNamedArgument[encodedAs].Argument[0].Parameter[0]"] + - ["Swift.UnsafePointer", "Swift.UnsafeBufferPointer", "Member[baseAddress]"] + - ["Swift.UnsafePointer", "Swift.UnsafeMutablePointer", "Member[pointer].ReturnValue"] + - ["Swift.UnsafePointer", "Swift.UnsafePointer", "Member[pointer].ReturnValue"] + - ["Swift.UnsafePointer", "Swift.UnsafePointer", "Member[withMemoryRebound].Argument[0].Parameter[0]"] + - ["Swift.UnsafePointer", "Swift.UnsafeRawPointer", "Member[assumingMemoryBound].ReturnValue"] + - ["Swift.UnsafePointer", "Swift.UnsafeRawPointer", "Member[bindMemory].ReturnValue"] + - ["Swift.UnsafePointer", "Swift.UnsafeRawPointer", "Member[withMemoryRebound].Argument[0].Parameter[0]"] + - ["Swift.UnsafePointer", "System.FilePath", "Member[withCString].Argument[0].Parameter[0]"] + - ["Swift.UnsafePointer", "System.FilePath", "Member[withPlatformString].Argument[0].Parameter[0]"] + - ["Swift.UnsafePointer", "System.FilePath.Component", "Member[withPlatformString].Argument[0].Parameter[0]"] + - ["Swift.UnsafePointer", "System.FilePath.Root", "Member[withPlatformString].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "CryptoKit.AES.GCM.Nonce", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "CryptoKit.ChaChaPoly.Nonce", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "CryptoKit.HashedAuthenticationCode", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "CryptoKit.Insecure.MD5Digest", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "CryptoKit.Insecure.SHA1Digest", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "CryptoKit.P256.Signing.ECDSASignature", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "CryptoKit.P384.Signing.ECDSASignature", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "CryptoKit.P521.Signing.ECDSASignature", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "CryptoKit.SHA256Digest", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "CryptoKit.SHA384Digest", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "CryptoKit.SHA3_256Digest", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "CryptoKit.SHA3_384Digest", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "CryptoKit.SHA3_512Digest", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "CryptoKit.SHA512Digest", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "CryptoKit.SharedSecret", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "CryptoKit.SymmetricKey", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "Foundation.CollectionOfOne", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "Foundation.ContiguousBytes", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "Foundation.DispatchData.Region", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "Foundation.InlineArray", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "Swift", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "Swift.Array", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "Swift.ArraySlice", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "Swift.ContiguousArray", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "Swift.EmptyCollection", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "Swift.MutableRawSpan", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "Swift.MutableSpan", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "Swift.OutputRawSpan", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "Swift.OutputSpan", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "Swift.RawSpan", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "Swift.Slice", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "Swift.Span", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "Swift.UTF8Span", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "Swift.UnsafeBufferPointer", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "Swift.UnsafeMutableBufferPointer", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "Swift.UnsafeMutableRawBufferPointer", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "Swift.UnsafeRawBufferPointer", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawBufferPointer", "Swift._HasContiguousBytes", "Member[withUnsafeBytes].Argument[0].Parameter[0]"] + - ["Swift.UnsafeRawPointer", "Swift.UnsafeRawBufferPointer", "Member[baseAddress]"] + - ["Swift.UnsafeRawPointer", "Swift.UnsafeRawPointer", "Member[advanced].ReturnValue"] + - ["Swift.UnsafeRawPointer", "Swift.UnsafeRawPointer", "Member[alignedDown].WithNamedArgument[for].ReturnValue"] + - ["Swift.UnsafeRawPointer", "Swift.UnsafeRawPointer", "Member[alignedDown].WithNamedArgument[toMultipleOf].ReturnValue"] + - ["Swift.UnsafeRawPointer", "Swift.UnsafeRawPointer", "Member[alignedUp].WithNamedArgument[for].ReturnValue"] + - ["Swift.UnsafeRawPointer", "Swift.UnsafeRawPointer", "Member[alignedUp].WithNamedArgument[toMultipleOf].ReturnValue"] + - ["System.FilePath", "AppleArchive.ArchiveHeader", "Member[entryPath]"] + - ["System.FilePath", "System.FilePath", "Member[appending].ReturnValue"] + - ["System.FilePath", "System.FilePath", "Member[lexicallyNormalized].ReturnValue"] + - ["System.FilePath", "System.FilePath", "Member[lexicallyResolving].ReturnValue"] + - ["System.FilePath", "System.FilePath", "Member[pushing].ReturnValue"] + - ["System.FilePath", "System.FilePath", "Member[removingLastComponent].ReturnValue"] + - ["System.FilePath", "System.FilePath", "Member[removingRoot].ReturnValue"] + - ["System.FilePath.Component", "System.FilePath", "Member[lastComponent]"] + - ["System.FilePath.Root", "System.FilePath", "Member[root]"] + - ["UIKit.UITextField", "UIKit.UITextField.TextDidBeginEditingMessage", "Member[textField]"] + - ["UIKit.UITextField", "UIKit.UITextField.TextDidChangeMessage", "Member[textField]"] + - ["UIKit.UITextField", "UIKit.UITextField.TextDidEndEditingMessage", "Member[textField]"] + - ["os.Logger", "os.Logger.Type", "Member[disabled]"] + - addsTo: + pack: codeql/unified-all + extensible: summaryModel + data: + - ["Foundation.NSString.Type", "", "", "Member[localizedStringWithFormat].ReturnValue", "type"] + - ["Swift.BinaryFloatingPoint.Type", "", "", "Member[random].WithNamedArgument[using].ReturnValue", "type"] + - ["Swift.BinaryFloatingPoint.Type", "", "", "Member[random].WithoutNamedArgument[using].ReturnValue", "type"] + - ["Swift.BinaryInteger", "", "", "Member[advanced].ReturnValue", "type"] + - ["Swift.BinaryInteger", "", "", "Member[signum].ReturnValue", "type"] + - ["Swift.BinaryInteger.Type", "", "", "Member[%].ReturnValue", "type"] + - ["Swift.BinaryInteger.Type", "", "", "Member[&].ReturnValue", "type"] + - ["Swift.BinaryInteger.Type", "", "", "Member[*].ReturnValue", "type"] + - ["Swift.BinaryInteger.Type", "", "", "Member[+].ReturnValue", "type"] + - ["Swift.BinaryInteger.Type", "", "", "Member[-].ReturnValue", "type"] + - ["Swift.BinaryInteger.Type", "", "", "Member[/].ReturnValue", "type"] + - ["Swift.BinaryInteger.Type", "", "", "Member[<<].ReturnValue", "type"] + - ["Swift.BinaryInteger.Type", "", "", "Member[>>].ReturnValue", "type"] + - ["Swift.BinaryInteger.Type", "", "", "Member[^].ReturnValue", "type"] + - ["Swift.BinaryInteger.Type", "", "", "Member[|].ReturnValue", "type"] + - ["Swift.BinaryInteger.Type", "", "", "Member[~].ReturnValue", "type"] + - ["Swift.FixedWidthInteger.Type", "", "", "Member[&*].ReturnValue", "type"] + - ["Swift.FixedWidthInteger.Type", "", "", "Member[&+].ReturnValue", "type"] + - ["Swift.FixedWidthInteger.Type", "", "", "Member[&-].ReturnValue", "type"] + - ["Swift.FixedWidthInteger.Type", "", "", "Member[&<<].ReturnValue", "type"] + - ["Swift.FixedWidthInteger.Type", "", "", "Member[&>>].ReturnValue", "type"] + - ["Swift.FixedWidthInteger.Type", "", "", "Member[<<].ReturnValue", "type"] + - ["Swift.FixedWidthInteger.Type", "", "", "Member[>>].ReturnValue", "type"] + - ["Swift.FixedWidthInteger.Type", "", "", "Member[random].WithNamedArgument[using].ReturnValue", "type"] + - ["Swift.FixedWidthInteger.Type", "", "", "Member[random].WithoutNamedArgument[using].ReturnValue", "type"] + - ["Swift.FixedWidthInteger.Type", "", "", "Member[~].ReturnValue", "type"] + - ["Swift.FloatingPoint", "", "", "Member[addingProduct].ReturnValue", "type"] + - ["Swift.FloatingPoint", "", "", "Member[remainder].ReturnValue", "type"] + - ["Swift.FloatingPoint", "", "", "Member[rounded].ReturnValue", "type"] + - ["Swift.FloatingPoint", "", "", "Member[squareRoot].ReturnValue", "type"] + - ["Swift.FloatingPoint", "", "", "Member[truncatingRemainder].ReturnValue", "type"] + - ["Swift.FloatingPoint.Type", "", "", "Member[*].ReturnValue", "type"] + - ["Swift.FloatingPoint.Type", "", "", "Member[+].ReturnValue", "type"] + - ["Swift.FloatingPoint.Type", "", "", "Member[-].WithNamedArgument[lhs].ReturnValue", "type"] + - ["Swift.FloatingPoint.Type", "", "", "Member[-].WithNamedArgument[operand].ReturnValue", "type"] + - ["Swift.FloatingPoint.Type", "", "", "Member[/].ReturnValue", "type"] + - ["Swift.FloatingPoint.Type", "", "", "Member[maximumMagnitude].ReturnValue", "type"] + - ["Swift.FloatingPoint.Type", "", "", "Member[maximum].ReturnValue", "type"] + - ["Swift.FloatingPoint.Type", "", "", "Member[minimumMagnitude].ReturnValue", "type"] + - ["Swift.FloatingPoint.Type", "", "", "Member[minimum].ReturnValue", "type"] + - ["Swift.Numeric.Type", "", "", "Member[*].ReturnValue", "type"] + - ["Swift.RangeReplaceableCollection", "", "", "Member[applying].ReturnValue", "type"] + - ["Swift.RangeReplaceableCollection", "", "", "Member[filter].ReturnValue", "type"] + - ["Swift.RangeReplaceableCollection", "", "", "Member[replacing].WithNamedArgument[subrange].ReturnValue", "type"] + - ["Swift.RangeReplaceableCollection", "", "", "Member[replacing].WithoutNamedArgument[subrange].ReturnValue", "type"] + - ["Swift.RangeReplaceableCollection.Type", "", "", "Member[+].ReturnValue", "type"] + - ["Swift.Sequence", "", "", "Member[makeIterator].ReturnValue", "type"] + - ["Swift.Strideable", "", "", "Member[advanced].ReturnValue", "type"] + - ["Swift.Strideable.Type", "", "", "Member[+].ReturnValue", "type"] + - ["Swift.Strideable.Type", "", "", "Member[-].ReturnValue", "type"] diff --git a/unified/ql/lib/ext/legacy-swift.model.yml b/unified/ql/lib/ext/legacy-swift.model.yml deleted file mode 100644 index d262fadcec1d..000000000000 --- a/unified/ql/lib/ext/legacy-swift.model.yml +++ /dev/null @@ -1,1189 +0,0 @@ -extensions: - - addsTo: - pack: codeql/unified-all - extensible: legacySourceModel - data: # namespace, type, subtypes, name, signature, ext, output, kind, provenance - - ["", "String", true, "count", "", "", "", "string-length", "manual"] - - ["", "String", true, "init(contentsOf:)", "(URL)", "", "ReturnValue", "remote", "manual"] - - ["", "String", true, "init(contentsOfFile:)", "(String)", "", "ReturnValue", "local", "manual"] - - ["", "String", true, "init(contentsOf:encoding:)", "(URL,String.Encoding)", "", "ReturnValue", "remote", "manual"] - - ["", "String", true, "init(contentsOfFile:encoding:)", "(String,String.Encoding)", "", "ReturnValue", "local", "manual"] - - ["", "String", true, "init(contentsOf:usedEncoding:)", "(URL,String.Encoding)", "", "ReturnValue", "remote", "manual"] - - ["", "String", true, "init(contentsOfFile:usedEncoding:)", "(String,String.Encoding)", "", "ReturnValue", "local", "manual"] - - ["", "", false, "SecKeyCopyExternalRepresentation(_:_:)", "", "", "ReturnValue", "sensitive-password", "manual"] - - ["", "URL", true, "lines", "", "", "", "remote", "manual"] - - ["", "URL", true, "resourceBytes", "", "", "", "remote", "manual"] - - ["", "UITextField", true, "text", "", "", "", "local", "manual"] - - ["", "UITextField", true, "attributedText", "", "", "", "local", "manual"] - - ["", "DataResponse", true, "value", "", "", "", "remote", "manual"] - - ["", "DataResponse", true, "result", "", "", "", "remote", "manual"] - - ["", "DataResponse", true, "data", "", "", "", "remote", "manual"] - - ["", "URL.AsyncBytes", true, "lines", "", "", "", "remote", "manual"] - - ["", "DownloadResponse", true, "value", "", "", "", "remote", "manual"] - - ["", "DownloadResponse", true, "result", "", "", "", "remote", "manual"] - - ["", "DownloadResponse", true, "data", "", "", "", "remote", "manual"] - - ["", "JSContext", true, "globalObject", "", "", "", "remote", "manual"] - - ["", "JSContext", true, "objectForKeyedSubscript(_:)", "", "", "ReturnValue", "remote", "manual"] - - ["", "JSContext", true, "objectAtIndexedSubscript(_:)", "", "", "ReturnValue", "remote", "manual"] - - ["", "UITextInput", true, "text(in:)", "", "", "ReturnValue", "local", "manual"] - - ["", "UITextInput", true, "shouldChangeText(in:replacementText:)", "", "", "Parameter[replacementText:]", "local", "manual"] - - ["", "NSData", true, "init(contentsOf:)", "", "", "ReturnValue", "remote", "manual"] - - ["", "NSData", true, "init(contentsOf:options:)", "", "", "ReturnValue", "remote", "manual"] - - ["", "NSString", true, "length", "", "", "", "nsstring-length", "manual"] - - ["", "NSString", true, "init(contentsOf:)", "", "", "ReturnValue", "remote", "manual"] - - ["", "NSString", true, "init(contentsOfFile:)", "", "", "ReturnValue", "local", "manual"] - - ["", "NSString", true, "string(withContentsOf:)", "", "", "ReturnValue", "remote", "manual"] - - ["", "NSString", true, "init(contentsOf:encoding:)", "", "", "ReturnValue", "remote", "manual"] - - ["", "NSString", true, "string(withContentsOfFile:)", "", "", "ReturnValue", "local", "manual"] - - ["", "NSString", true, "init(contentsOfFile:encoding:)", "", "", "ReturnValue", "local", "manual"] - - ["", "NSString", true, "init(contentsOf:usedEncoding:)", "", "", "ReturnValue", "remote", "manual"] - - ["", "NSString", true, "init(contentsOfFile:usedEncoding:)", "", "", "ReturnValue", "local", "manual"] - - ["", "FileManager", true, "contents(atPath:)", "", "", "ReturnValue", "local", "manual"] - - ["", "Data", true, "init(contentsOf:options:)", "", "", "ReturnValue", "remote", "manual"] - - ["", "Data", true, "init(contentsOf:)", "", "", "ReturnValue", "remote", "manual"] - - ["", "UISceneDelegate", true, "scene(_:continue:)", "", "", "Parameter[continue:]", "remote", "manual"] - - ["", "UISceneDelegate", true, "scene(_:didUpdate:)", "", "", "Parameter[didUpdate:]", "remote", "manual"] - - ["", "UISceneDelegate", true, "scene(_:openURLContexts:)", "", "", "Parameter[openURLContexts:]", "remote", "manual"] - - ["", "UISceneDelegate", true, "scene(_:options:willConnectTo:)", "", "", "Parameter[options:]", "remote", "manual"] - - ["", "UIApplicationDelegate", true, "application(_:handleOpen:)", "", "", "Parameter[handleOpen:]", "remote", "manual"] - - ["", "UIApplicationDelegate", true, "application(_:open:options:)", "", "", "Parameter[open:]", "remote", "manual"] - - ["", "UIApplicationDelegate", true, "application(_:annotation:open:sourceApplication:)", "", "", "Parameter[open:]", "remote", "manual"] - - ["", "WKScriptMessageHandler", true, "userContentController(_:didReceive:)", "", "", "Parameter[didReceive:]", "remote", "manual"] - - ["", "UITextViewDelegate", true, "textView(_:replacementText:shouldChangeTextIn:)", "", "", "Parameter[replacementText:]", "local", "manual"] - - ["", "UITextFieldDelegate", true, "textField(_:replacementString:shouldChangeCharactersIn:)", "", "", "Parameter[replacementString:]", "local", "manual"] - - ["", "NSMutableString", true, "length", "", "", "", "nsstring-length", "manual"] - - addsTo: - pack: codeql/unified-all - extensible: legacySinkModel - data: # namespace, type, subtypes, name, signature, ext, input, kind, provenance - - ["", "String", true, "index(_:offsetBy:)", "", "", "Argument[0,offsetBy:]", "string-length", "manual"] - - ["", "String", true, "init(contentsOfFile:)", "", "", "Argument[contentsOfFile:]", "path-injection", "manual"] - - ["", "String", true, "init(contentsOfFile:encoding:)", "", "", "Argument[contentsOfFile:]", "path-injection", "manual"] - - ["", "String", true, "init(contentsOfFile:usedEncoding:)", "", "", "Argument[contentsOfFile:]", "path-injection", "manual"] - - ["", "String", true, "index(_:limitBy:offsetBy:)", "", "", "Argument[0,offsetBy:]", "string-length", "manual"] - - ["", "String", true, "md5()", "", "", "Argument[self]", "weak-hash-input-MD5", "manual"] - - ["", "String", true, "sha1()", "", "", "Argument[self]", "weak-hash-input-SHA1", "manual"] - - ["", "String", true, "sha2(_:)", "", "", "Argument[self]", "weak-password-hash-input-SHA2", "manual"] - - ["", "String", true, "sha224()", "", "", "Argument[self]", "weak-password-hash-input-SHA224", "manual"] - - ["", "String", true, "sha256()", "", "", "Argument[self]", "weak-password-hash-input-SHA256", "manual"] - - ["", "String", true, "sha3(_:)", "", "", "Argument[self]", "weak-password-hash-input-SHA3", "manual"] - - ["", "String", true, "sha384()", "", "", "Argument[self]", "weak-password-hash-input-SHA384", "manual"] - - ["", "String", true, "sha512()", "", "", "Argument[self]", "weak-password-hash-input-SHA512", "manual"] - - ["", "Array", true, "md5()", "", "", "Argument[self]", "weak-hash-input-MD5", "manual"] - - ["", "Array", true, "sha1()", "", "", "Argument[self]", "weak-hash-input-SHA1", "manual"] - - ["", "Array", true, "sha2(_:)", "", "", "Argument[self]", "weak-password-hash-input-SHA2", "manual"] - - ["", "Array", true, "sha224()", "", "", "Argument[self]", "weak-password-hash-input-SHA224", "manual"] - - ["", "Array", true, "sha256()", "", "", "Argument[self]", "weak-password-hash-input-SHA256", "manual"] - - ["", "Array", true, "sha3(_:)", "", "", "Argument[self]", "weak-password-hash-input-SHA3", "manual"] - - ["", "Array", true, "sha384()", "", "", "Argument[self]", "weak-password-hash-input-SHA384", "manual"] - - ["", "Array", true, "sha512()", "", "", "Argument[self]", "weak-password-hash-input-SHA512", "manual"] - - ["", "String.Index", true, "init(encodedOffset:)", "", "", "Argument[encodedOffset:]", "string-length", "manual"] - - ["", "Regex", true, "init(_:)", "", "", "Argument[0]", "regex-use", "manual"] - - ["", "Regex", true, "init(_:as:)", "", "", "Argument[0]", "regex-use", "manual"] - - ["", "", false, "assert(_:_:file:line:)", "", "", "Argument[1]", "log-injection", "manual"] - - ["", "", false, "precondition(_:_:file:line:)", "", "", "Argument[1]", "log-injection", "manual"] - - ["", "", false, "assertionFailure(_:file:line:)", "", "", "Argument[0]", "log-injection", "manual"] - - ["", "", false, "preconditionFailure(_:file:line:)", "", "", "Argument[0]", "log-injection", "manual"] - - ["", "", false, "fatalError(_:file:line:)", "", "", "Argument[0]", "log-injection", "manual"] - - ["", "", false, "dump(_:indent:maxDepth:maxItems:name:)", "", "", "Argument[0,name:]", "log-injection", "manual"] - - ["", "", false, "print(_:separator:terminator:)", "", "", "Argument[0,separator:,terminator:]", "log-injection", "manual"] - - ["", "", false, "debugPrint(_:separator:terminator:)", "", "", "Argument[0,separator:,terminator:]", "log-injection", "manual"] - - ["", "", false, "NSMakeRange(_:_:)", "", "", "Argument[0,1]", "nsstring-length", "manual"] - - ["", "", false, "sqlite3_key(_:_:_:)", "", "", "Argument[1]", "encryption-key", "manual"] - - ["", "", false, "sqlite3_key_v2(_:_:_:_:)", "", "", "Argument[2]", "encryption-key", "manual"] - - ["", "", false, "sqlite3_rekey(_:_:_:)", "", "", "Argument[1]", "encryption-key", "manual"] - - ["", "", false, "sqlite3_rekey_v2(_:_:_:_:)", "", "", "Argument[2]", "encryption-key", "manual"] - - ["", "", false, "NSLog(_:_:)", "", "", "Argument[0,1]", "log-injection", "manual"] - - ["", "", false, "NSLogv(_:_:)", "", "", "Argument[0,1]", "log-injection", "manual"] - - ["", "", false, "os_log(_:)", "", "", "Argument[0]", "log-injection", "manual"] - - ["", "", false, "os_log(_:_:_:dso:log:)", "", "", "Argument[0,2]", "log-injection", "manual"] - - ["", "", false, "os_log(_:_:dso:log:type:)", "", "", "Argument[0,1]", "log-injection", "manual"] - - ["", "", false, "os_log(_:_:log:)", "", "", "Argument[1]", "log-injection", "manual"] - - ["", "", false, "print(_:separator:terminator:toStream:)", "", "", "Argument[0,separator:,terminator:]", "log-injection", "manual"] - - ["", "", false, "vfprintf(_:_:_:)", "", "", "Argument[1,2]", "log-injection", "manual"] - - ["", "", false, "sqlite3_bind_blob(_:_:_:_:_:)", "", "", "Argument[2]", "database-store", "manual"] - - ["", "", false, "sqlite3_bind_blob64(_:_:_:_:_:)", "", "", "Argument[2]", "database-store", "manual"] - - ["", "", false, "sqlite3_bind_double(_:_:_:)", "", "", "Argument[2]", "database-store", "manual"] - - ["", "", false, "sqlite3_bind_int(_:_:_:)", "", "", "Argument[2]", "database-store", "manual"] - - ["", "", false, "sqlite3_bind_int64(_:_:_:)", "", "", "Argument[2]", "database-store", "manual"] - - ["", "", false, "sqlite3_bind_pointer(_:_:_:_:)", "", "", "Argument[2]", "database-store", "manual"] - - ["", "", false, "sqlite3_bind_text(_:_:_:_:_:)", "", "", "Argument[2]", "database-store", "manual"] - - ["", "", false, "sqlite3_bind_text16(_:_:_:_:_:)", "", "", "Argument[2]", "database-store", "manual"] - - ["", "", false, "sqlite3_bind_text64(_:_:_:_:_:_:)", "", "", "Argument[2]", "database-store", "manual"] - - ["", "", false, "sqlite3_bind_value(_:_:_:)", "", "", "Argument[2]", "database-store", "manual"] - - ["", "", false, "sqlite3_exec(_:_:_:_:_:)", "", "", "Argument[1]", "database-store", "manual"] - - ["", "", false, "sqlite3_prepare(_:_:_:_:_:)", "", "", "Argument[1]", "database-store", "manual"] - - ["", "", false, "sqlite3_prepare16(_:_:_:_:_:)", "", "", "Argument[1]", "database-store", "manual"] - - ["", "", false, "sqlite3_prepare16_v2(_:_:_:_:_:)", "", "", "Argument[1]", "database-store", "manual"] - - ["", "", false, "sqlite3_prepare16_v3(_:_:_:_:_:)", "", "", "Argument[1]", "database-store", "manual"] - - ["", "", false, "sqlite3_prepare_v2(_:_:_:_:_:)", "", "", "Argument[1]", "database-store", "manual"] - - ["", "", false, "sqlite3_prepare_v3(_:_:_:_:_:_:)", "", "", "Argument[1]", "database-store", "manual"] - - ["", "", false, "sqlite3_database_file_object(_:)", "", "", "Argument[0]", "path-injection", "manual"] - - ["", "", false, "sqlite3_filename_database(_:)", "", "", "Argument[0]", "path-injection", "manual"] - - ["", "", false, "sqlite3_filename_journal(_:)", "", "", "Argument[0]", "path-injection", "manual"] - - ["", "", false, "sqlite3_filename_wal(_:)", "", "", "Argument[0]", "path-injection", "manual"] - - ["", "", false, "sqlite3_free_filename(_:)", "", "", "Argument[0]", "path-injection", "manual"] - - ["", "", false, "sqlite3_open(_:_:)", "", "", "Argument[0]", "path-injection", "manual"] - - ["", "", false, "sqlite3_open16(_:_:)", "", "", "Argument[0]", "path-injection", "manual"] - - ["", "", false, "sqlite3_open_v2(_:_:_:_:)", "", "", "Argument[0]", "path-injection", "manual"] - - ["", "NSData", true, "init(contentsOf:)", "", "", "Argument[contentsOf:]", "path-injection", "manual"] - - ["", "NSData", true, "init(contentsOfFile:)", "", "", "Argument[contentsOfFile:]", "path-injection", "manual"] - - ["", "NSData", true, "init(contentsOf:options:)", "", "", "Argument[contentsOf:]", "path-injection", "manual"] - - ["", "NSData", true, "dataWithContentsOfMappedFile(_:)", "", "", "Argument[0]", "path-injection", "manual"] - - ["", "NSData", true, "init(contentsOfFile:options:)", "", "", "Argument[contentsOfFile:]", "path-injection", "manual"] - - ["", "NSData", true, "init(contentsOfMappedFile:)", "", "", "Argument[contentsOfMappedFile:]", "path-injection", "manual"] - - ["", "NSData", true, "write(options:to:)", "", "", "Argument[to:]", "path-injection", "manual"] - - ["", "NSData", true, "write(atomically:to:)", "", "", "Argument[to:]", "path-injection", "manual"] - - ["", "NSData", true, "write(atomically:toFile:)", "", "", "Argument[toFile:]", "path-injection", "manual"] - - ["", "NSData", true, "write(options:toFile:)", "", "", "Argument[toFile:]", "path-injection", "manual"] - - ["", "NSString", true, "character(at:)", "", "", "Argument[at:]", "nsstring-length", "manual"] - - ["", "NSString", true, "init(contentsOfFile:encoding:)", "", "", "Argument[contentsOfFile:]", "path-injection", "manual"] - - ["", "NSString", true, "init(contentsOfFile:usedEncoding:)", "", "", "Argument[contentsOfFile:]", "path-injection", "manual"] - - ["", "NSString", true, "substring(from:)", "", "", "Argument[from:]", "nsstring-length", "manual"] - - ["", "NSString", true, "substring(to:)", "", "", "Argument[to:]", "nsstring-length", "manual"] - - ["", "NSString", true, "write(atomically:encoding:to:)", "", "", "Argument[to:]", "path-injection", "manual"] - - ["", "NSString", true, "write(atomically:encoding:toFile:)", "", "", "Argument[toFile:]", "path-injection", "manual"] - - ["", "FileManager", true, "contents(atPath:)", "", "", "Argument[atPath:]", "path-injection", "manual"] - - ["", "FileManager", true, "unzipItem(at:pathEncoding:progress:skipCRC32:to:)", "", "", "Argument[at:]", "unsafe-unpack", "manual"] - - ["", "FileManager", true, "attributesOfItem(atPath:)", "", "", "Argument[atPath:]", "path-injection", "manual"] - - ["", "FileManager", true, "changeCurrentDirectoryPath(_:)", "", "", "Argument[0]", "path-injection", "manual"] - - ["", "FileManager", true, "changeFileAttributes(_:atPath:)", "", "", "Argument[atPath:]", "path-injection", "manual"] - - ["", "FileManager", true, "contentsEqual(andPath:atPath:)", "", "", "Argument[atPath:,andPath:]", "path-injection", "manual"] - - ["", "FileManager", true, "contentsOfDirectory(at:includingPropertiesForKeys:options:)", "", "", "Argument[at:]", "path-injection", "manual"] - - ["", "FileManager", true, "contentsOfDirectory(atPath:)", "", "", "Argument[atPath:]", "path-injection", "manual"] - - ["", "FileManager", true, "copyItem(at:to:)", "", "", "Argument[at:,to:]", "path-injection", "manual"] - - ["", "FileManager", true, "copyItem(atPath:toPath:)", "", "", "Argument[atPath:,toPath:]", "path-injection", "manual"] - - ["", "FileManager", true, "createDirectory(at:attributes:withIntermediateDirectories:)", "", "", "Argument[at:]", "path-injection", "manual"] - - ["", "FileManager", true, "createDirectory(atPath:attributes:)", "", "", "Argument[atPath:]", "path-injection", "manual"] - - ["", "FileManager", true, "createDirectory(atPath:attributes:withIntermediateDirectories:)", "", "", "Argument[atPath:]", "path-injection", "manual"] - - ["", "FileManager", true, "createFile(atPath:attributes:contents:)", "", "", "Argument[atPath:]", "path-injection", "manual"] - - ["", "FileManager", true, "createSymbolicLink(at:withDestinationURL:)", "", "", "Argument[at:,withDestinationURL:]", "path-injection", "manual"] - - ["", "FileManager", true, "createSymbolicLink(atPath:pathContent:)", "", "", "Argument[atPath:,pathContent:]", "path-injection", "manual"] - - ["", "FileManager", true, "createSymbolicLink(atPath:withDestinationPath:)", "", "", "Argument[atPath:,withDestinationPath:]", "path-injection", "manual"] - - ["", "FileManager", true, "destinationOfSymbolicLink(atPath:)", "", "", "Argument[atPath:]", "path-injection", "manual"] - - ["", "FileManager", true, "directoryContents(atPath:)", "", "", "Argument[atPath:]", "path-injection", "manual"] - - ["", "FileManager", true, "enumerator(at:errorHandler:includingPropertiesForKeys:options:)", "", "", "Argument[at:]", "path-injection", "manual"] - - ["", "FileManager", true, "enumerator(atPath:)", "", "", "Argument[atPath:]", "path-injection", "manual"] - - ["", "FileManager", true, "fileAttributes(atPath:traverseLink:)", "", "", "Argument[atPath:]", "path-injection", "manual"] - - ["", "FileManager", true, "fileExists(atPath:)", "", "", "Argument[atPath:]", "path-injection", "manual"] - - ["", "FileManager", true, "fileExists(atPath:isDirectory:)", "", "", "Argument[atPath:]", "path-injection", "manual"] - - ["", "FileManager", true, "linkItem(at:to:)", "", "", "Argument[at:,to:]", "path-injection", "manual"] - - ["", "FileManager", true, "linkItem(atPath:toPath:)", "", "", "Argument[atPath:,toPath:]", "path-injection", "manual"] - - ["", "FileManager", true, "moveItem(at:to:)", "", "", "Argument[at:,to:]", "path-injection", "manual"] - - ["", "FileManager", true, "moveItem(atPath:toPath:)", "", "", "Argument[atPath:,toPath:]", "path-injection", "manual"] - - ["", "FileManager", true, "pathContentOfSymbolicLink(atPath:)", "", "", "Argument[atPath:]", "path-injection", "manual"] - - ["", "FileManager", true, "removeItem(at:)", "", "", "Argument[at:]", "path-injection", "manual"] - - ["", "FileManager", true, "removeItem(atPath:)", "", "", "Argument[atPath:]", "path-injection", "manual"] - - ["", "FileManager", true, "replaceItem(at:backupItemName:options:resultingItemURL:withItemAt:)", "", "", "Argument[at:,withItemAt:]", "path-injection", "manual"] - - ["", "FileManager", true, "replaceItemAt(_:backupItemName:options:withItemAt:)", "", "", "Argument[0,withItemAt:]", "path-injection", "manual"] - - ["", "FileManager", true, "replaceItemAtURL(backupItemName:options:originalItemURL:withItemAtURL:)", "", "", "Argument[originalItemURL:,withItemAtURL:]", "path-injection", "manual"] - - ["", "FileManager", true, "setAttributes(_:ofItemAtPath:)", "", "", "Argument[ofItemAtPath:]", "path-injection", "manual"] - - ["", "FileManager", true, "subpaths(atPath:)", "", "", "Argument[atPath:]", "path-injection", "manual"] - - ["", "FileManager", true, "subpathsOfDirectory(atPath:)", "", "", "Argument[atPath:]", "path-injection", "manual"] - - ["", "FileManager", true, "trashItem(at:resultingItemURL:)", "", "", "Argument[at:]", "path-injection", "manual"] - - ["", "FileManager", true, "unmountVolume(at:completionHandler:options:)", "", "", "Argument[at:]", "path-injection", "manual"] - - ["", "Data", true, "init(contentsOf:options:)", "", "", "Argument[contentsOf:]", "path-injection", "manual"] - - ["", "Data", true, "md5()", "", "", "Argument[self]", "weak-hash-input-MD5", "manual"] - - ["", "Data", true, "sha1()", "", "", "Argument[self]", "weak-hash-input-SHA1", "manual"] - - ["", "Data", true, "sha2(_:)", "", "", "Argument[self]", "weak-password-hash-input-SHA2", "manual"] - - ["", "Data", true, "sha224()", "", "", "Argument[self]", "weak-password-hash-input-SHA224", "manual"] - - ["", "Data", true, "sha256()", "", "", "Argument[self]", "weak-password-hash-input-SHA256", "manual"] - - ["", "Data", true, "sha3(_:)", "", "", "Argument[self]", "weak-password-hash-input-SHA3", "manual"] - - ["", "Data", true, "sha384()", "", "", "Argument[self]", "weak-password-hash-input-SHA384", "manual"] - - ["", "Data", true, "sha512()", "", "", "Argument[self]", "weak-password-hash-input-SHA512", "manual"] - - ["", "Data", true, "write(options:to:)", "", "", "Argument[to:]", "path-injection", "manual"] - - ["", "NSMutableString", true, "insert(_:at:)", "", "", "Argument[at:]", "nsstring-length", "manual"] - - ["", "NSMutableString", true, "character(at:)", "", "", "Argument[at:]", "nsstring-length", "manual"] - - ["", "NSMutableString", true, "substring(from:)", "", "", "Argument[from:]", "nsstring-length", "manual"] - - ["", "NSMutableString", true, "substring(to:)", "", "", "Argument[to:]", "nsstring-length", "manual"] - - ["", "AES", true, "init(blockMode:key:)", "", "", "Argument[blockMode:]", "encryption-block-mode", "manual"] - - ["", "AES", true, "init(blockMode:key:padding:)", "", "", "Argument[blockMode:]", "encryption-block-mode", "manual"] - - ["", "NSPredicate", true, "init(_:format:)", "", "", "Argument[format:]", "predicate-injection", "manual"] - - ["", "NSPredicate", true, "init(arguments:format:)", "", "", "Argument[format:]", "predicate-injection", "manual"] - - ["", "NSPredicate", true, "init(argumentArray:format:)", "", "", "Argument[format:]", "predicate-injection", "manual"] - - ["", "NSPredicate", true, "init(fromMetadataQueryString:)", "", "", "Argument[fromMetadataQueryString:]", "predicate-injection", "manual"] - - ["", "NSRegularExpression", true, "init(options:pattern:)", "", "", "Argument[pattern:]", "regex-use", "manual"] - - ["", "Blowfish", true, "init(blockMode:key:padding:)", "", "", "Argument[blockMode:]", "encryption-block-mode", "manual"] - - ["", "URLSessionConfiguration", false, "tlsMaximumSupportedProtocol", "", "", "PostUpdate", "tls-protocol-version", "manual"] - - ["", "URLSessionConfiguration", false, "tlsMinimumSupportedProtocol", "", "", "PostUpdate", "tls-protocol-version", "manual"] - - ["", "URLSessionConfiguration", false, "tlsMaximumSupportedProtocolVersion", "", "", "PostUpdate", "tls-protocol-version", "manual"] - - ["", "URLSessionConfiguration", false, "tlsMinimumSupportedProtocolVersion", "", "", "PostUpdate", "tls-protocol-version", "manual"] - - ["", "NWConnection", true, "send(completion:content:contentContext:isComplete:)", "", "", "Argument[content:]", "transmission", "manual"] - - ["", "Zip", true, "unzipFile(_:destination:fileOutputHandler:overwrite:password:progress:)", "", "", "Argument[0]", "unsafe-unpack", "manual"] - - ["", "NSRange", true, "init(length:location:)", "", "", "Argument[location:,length:]", "nsstring-length", "manual"] - - ["", "NSUserScriptTask", true, "init(url:)", "", "", "Argument[url:]", "command-injection", "manual"] - - ["", "NSUserUnixTask", true, "execute(completionHandler:withArguments:)", "", "", "Argument[withArguments:]", "command-injection", "manual"] - - ["", "Process", true, "arguments", "", "", "PostUpdate", "command-injection", "manual"] - - ["", "Process", true, "currentDirectory", "", "", "PostUpdate", "command-injection", "manual"] - - ["", "Process", true, "currentDirectoryPath", "", "", "PostUpdate", "command-injection", "manual"] - - ["", "Process", true, "environment", "", "", "PostUpdate", "command-injection", "manual"] - - ["", "Process", true, "executableURL", "", "", "PostUpdate", "command-injection", "manual"] - - ["", "Process", true, "launchPath", "", "", "PostUpdate", "command-injection", "manual"] - - ["", "Process", true, "launchedProcess(arguments:launchPath:)", "", "", "Argument[launchPath:,arguments:]", "command-injection", "manual"] - # Calls may omit the defaulted terminationHandler argument. - - ["", "Process", true, "run(_:arguments:)", "", "", "Argument[0,arguments:]", "command-injection", "manual"] - - ["", "Process", true, "run(_:arguments:terminationHandler:)", "", "", "Argument[0,arguments:]", "command-injection", "manual"] - - ["", "Process", true, "standardError", "", "", "PostUpdate", "command-injection", "manual"] - - ["", "Process", true, "standardInput", "", "", "PostUpdate", "command-injection", "manual"] - - ["", "Process", true, "standardOutput", "", "", "PostUpdate", "command-injection", "manual"] - - ["", "Connection", true, "key(_:db:)", "", "", "Argument[0]", "encryption-key", "manual"] - - ["", "Connection", true, "keyAndMigrate(_:db:)", "", "", "Argument[0]", "encryption-key", "manual"] - - ["", "Connection", true, "rekey(_:db:)", "", "", "Argument[0]", "encryption-key", "manual"] - - ["", "Connection", true, "sqlcipher_export(_:key:)", "", "", "Argument[key:]", "encryption-key", "manual"] - - ["", "Connection", true, "execute(_:)", "", "", "Argument[0]", "database-store", "manual"] - - ["", "Connection", true, "prepare(_:_:)", "", "", "Argument[0]", "database-store", "manual"] - - ["", "Connection", true, "prepare(_:_:)", "", "", "Argument[1]", "database-store", "manual"] - - ["", "Connection", true, "run(_:_:)", "", "", "Argument[0]", "database-store", "manual"] - - ["", "Connection", true, "run(_:_:)", "", "", "Argument[1]", "database-store", "manual"] - - ["", "Connection", true, "scalar(_:_:)", "", "", "Argument[0]", "database-store", "manual"] - - ["", "Connection", true, "scalar(_:_:)", "", "", "Argument[1]", "database-store", "manual"] - - ["", "Connection", true, "init(_:readonly:)", "", "", "Argument[0]", "path-injection", "manual"] - - ["", "Connection.Location", true, "uri(_:parameters:)", "", "", "Argument[0]", "path-injection", "manual"] - - ["", "Database", true, "changePassphrase(_:)", "", "", "Argument[0]", "encryption-key", "manual"] - - ["", "Database", true, "usePassphrase(_:)", "", "", "Argument[0]", "encryption-key", "manual"] - - ["", "Database", true, "allStatements(arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] - - ["", "Database", true, "execute(arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] - - ["", "Database", true, "init(configuration:description:path:)", "", "", "Argument[path:]", "path-injection", "manual"] - - ["", "Realm.Configuration", true, "encryptionKey", "", "", "PostUpdate", "encryption-key", "manual"] - - ["", "Realm.Configuration", true, "init(deleteRealmIfMigrationNeeded:encryptionKey:fileURL:inMemoryIdentifier:migrationBlock:objectTypes:readOnly:schemaVersion:shouldCompactOnLaunch:syncConfiguration:)", "", "", "Argument[fileURL:]", "path-injection", "manual"] - - ["", "Realm.Configuration", true, "init(deleteRealmIfMigrationNeeded:encryptionKey:fileURL:inMemoryIdentifier:migrationBlock:objectTypes:readOnly:schemaVersion:shouldCompactOnLaunch:syncConfiguration:)", "", "", "Argument[encryptionKey:]", "encryption-key", "manual"] - - ["", "Realm.Configuration", true, "init(deleteRealmIfMigrationNeeded:encryptionKey:fileURL:inMemoryIdentifier:migrationBlock:objectTypes:readOnly:schemaVersion:seedFilePath:shouldCompactOnLaunch:syncConfiguration:)", "", "", "Argument[fileURL:]", "path-injection", "manual"] - - ["", "Realm.Configuration", true, "init(deleteRealmIfMigrationNeeded:encryptionKey:fileURL:inMemoryIdentifier:migrationBlock:objectTypes:readOnly:schemaVersion:seedFilePath:shouldCompactOnLaunch:syncConfiguration:)", "", "", "Argument[encryptionKey:]", "encryption-key", "manual"] - - ["", "Realm.Configuration", true, "init(deleteRealmIfMigrationNeeded:encryptionKey:fileURL:inMemoryIdentifier:migrationBlock:objectTypes:readOnly:schemaVersion:seedFilePath:shouldCompactOnLaunch:syncConfiguration:)", "", "", "Argument[seedFilePath:]", "path-injection", "manual"] - - ["", "Realm.Configuration", true, "fileURL", "", "", "PostUpdate", "path-injection", "manual"] - - ["", "Realm.Configuration", true, "seedFilePath", "", "", "PostUpdate", "path-injection", "manual"] - - ["", "Digest", true, "md5(_:)", "", "", "Argument[0]", "weak-hash-input-MD5", "manual"] - - ["", "Digest", true, "sha1(_:)", "", "", "Argument[0]", "weak-hash-input-SHA1", "manual"] - - ["", "Digest", true, "sha2(_:variant:)", "", "", "Argument[0]", "weak-password-hash-input-SHA2", "manual"] - - ["", "Digest", true, "sha224(_:)", "", "", "Argument[0]", "weak-password-hash-input-SHA224", "manual"] - - ["", "Digest", true, "sha256(_:)", "", "", "Argument[0]", "weak-password-hash-input-SHA256", "manual"] - - ["", "Digest", true, "sha3(_:variant:)", "", "", "Argument[0]", "weak-password-hash-input-SHA3", "manual"] - - ["", "Digest", true, "sha384(_:)", "", "", "Argument[0]", "weak-password-hash-input-SHA384", "manual"] - - ["", "Digest", true, "sha512(_:)", "", "", "Argument[0]", "weak-password-hash-input-SHA512", "manual"] - - ["", "Insecure.MD5", true, "hash(bufferPointer:)", "", "", "Argument[bufferPointer:]", "weak-hash-input-MD5", "manual"] - - ["", "Insecure.MD5", true, "hash(data:)", "", "", "Argument[data:]", "weak-hash-input-MD5", "manual"] - - ["", "Insecure.MD5", true, "update(bufferPointer:)", "", "", "Argument[bufferPointer:]", "weak-hash-input-MD5", "manual"] - - ["", "Insecure.MD5", true, "update(data:)", "", "", "Argument[data:]", "weak-hash-input-MD5", "manual"] - - ["", "Insecure.SHA1", true, "hash(bufferPointer:)", "", "", "Argument[bufferPointer:]", "weak-hash-input-SHA1", "manual"] - - ["", "Insecure.SHA1", true, "hash(data:)", "", "", "Argument[data:]", "weak-hash-input-SHA1", "manual"] - - ["", "Insecure.SHA1", true, "update(bufferPointer:)", "", "", "Argument[bufferPointer:]", "weak-hash-input-SHA1", "manual"] - - ["", "Insecure.SHA1", true, "update(data:)", "", "", "Argument[data:]", "weak-hash-input-SHA1", "manual"] - - ["", "MD5", true, "callAsFunction(_:)", "", "", "Argument[0]", "weak-hash-input-MD5", "manual"] - - ["", "MD5", true, "calculate(for:)", "", "", "Argument[for:]", "weak-hash-input-MD5", "manual"] - - ["", "MD5", true, "process(block:currentHash:)", "", "", "Argument[block:]", "weak-hash-input-MD5", "manual"] - - ["", "MD5", true, "update(isLast:withBytes:)", "", "", "Argument[withBytes:]", "weak-hash-input-MD5", "manual"] - - ["", "SHA1", true, "callAsFunction(_:)", "", "", "Argument[0]", "weak-hash-input-SHA1", "manual"] - - ["", "SHA1", true, "calculate(for:)", "", "", "Argument[for:]", "weak-hash-input-SHA1", "manual"] - - ["", "SHA1", true, "process(block:currentHash:)", "", "", "Argument[block:]", "weak-hash-input-SHA1", "manual"] - - ["", "SHA1", true, "update(isLast:withBytes:)", "", "", "Argument[withBytes:]", "weak-hash-input-SHA1", "manual"] - - ["", "Logger", true, "warning(_:)", "", "", "Argument[0]", "log-injection", "manual"] - - ["", "Logger", true, "error(_:)", "", "", "Argument[0]", "log-injection", "manual"] - - ["", "Logger", true, "critical(_:)", "", "", "Argument[0]", "log-injection", "manual"] - - ["", "Logger", true, "debug(_:)", "", "", "Argument[0]", "log-injection", "manual"] - - ["", "Logger", true, "fault(_:)", "", "", "Argument[0]", "log-injection", "manual"] - - ["", "Logger", true, "info(_:)", "", "", "Argument[0]", "log-injection", "manual"] - - ["", "Logger", true, "log(_:)", "", "", "Argument[0]", "log-injection", "manual"] - - ["", "Logger", true, "log(_:level:)", "", "", "Argument[0]", "log-injection", "manual"] - - ["", "Logger", true, "notice(_:)", "", "", "Argument[0]", "log-injection", "manual"] - - ["", "Logger", true, "trace(_:)", "", "", "Argument[0]", "log-injection", "manual"] - - ["", "NSException", true, "init(name:reason:userInfo:)", "", "", "Argument[reason:]", "log-injection", "manual"] - - ["", "NSException", true, "raise(_:arguments:format:)", "", "", "Argument[format:,arguments:]", "log-injection", "manual"] - - ["", "SHA256", true, "hash(bufferPointer:)", "", "", "Argument[bufferPointer:]", "weak-password-hash-input-SHA256", "manual"] - - ["", "SHA256", true, "hash(data:)", "", "", "Argument[data:]", "weak-password-hash-input-SHA256", "manual"] - - ["", "SHA256", true, "update(bufferPointer:)", "", "", "Argument[bufferPointer:]", "weak-password-hash-input-SHA256", "manual"] - - ["", "SHA256", true, "update(data:)", "", "", "Argument[data:]", "weak-password-hash-input-SHA256", "manual"] - - ["", "SHA2", true, "callAsFunction(_:)", "", "", "Argument[0]", "weak-password-hash-input-SHA2", "manual"] - - ["", "SHA2", true, "calculate(for:)", "", "", "Argument[for:]", "weak-password-hash-input-SHA2", "manual"] - - ["", "SHA2", true, "update(isLast:withBytes:)", "", "", "Argument[withBytes:]", "weak-password-hash-input-SHA2", "manual"] - - ["", "SHA2", true, "process32(block:currentHash:)", "", "", "Argument[block:]", "weak-password-hash-input-SHA2", "manual"] - - ["", "SHA2", true, "process64(block:currentHash:)", "", "", "Argument[block:]", "weak-password-hash-input-SHA2", "manual"] - - ["", "SHA384", true, "hash(bufferPointer:)", "", "", "Argument[bufferPointer:]", "weak-password-hash-input-SHA384", "manual"] - - ["", "SHA384", true, "hash(data:)", "", "", "Argument[data:]", "weak-password-hash-input-SHA384", "manual"] - - ["", "SHA384", true, "update(bufferPointer:)", "", "", "Argument[bufferPointer:]", "weak-password-hash-input-SHA384", "manual"] - - ["", "SHA384", true, "update(data:)", "", "", "Argument[data:]", "weak-password-hash-input-SHA384", "manual"] - - ["", "SHA3", true, "callAsFunction(_:)", "", "", "Argument[0]", "weak-password-hash-input-SHA2", "manual"] - - ["", "SHA3", true, "calculate(for:)", "", "", "Argument[for:]", "weak-password-hash-input-SHA2", "manual"] - - ["", "SHA3", true, "process(block:currentHash:)", "", "", "Argument[block:]", "weak-password-hash-input-SHA2", "manual"] - - ["", "SHA3", true, "update(isLast:withBytes:)", "", "", "Argument[withBytes:]", "weak-password-hash-input-SHA2", "manual"] - - ["", "SHA512", true, "hash(bufferPointer:)", "", "", "Argument[bufferPointer:]", "weak-password-hash-input-SHA512", "manual"] - - ["", "SHA512", true, "hash(data:)", "", "", "Argument[data:]", "weak-password-hash-input-SHA512", "manual"] - - ["", "SHA512", true, "update(bufferPointer:)", "", "", "Argument[bufferPointer:]", "weak-password-hash-input-SHA512", "manual"] - - ["", "SHA512", true, "update(data:)", "", "", "Argument[data:]", "weak-password-hash-input-SHA512", "manual"] - - ["", "CommonTableExpression", true, "init(arguments:columns:named:recursive:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] - - ["", "DatabaseValueConvertible", true, "fetchAll(_:adapter:arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] - - ["", "DatabaseValueConvertible", true, "fetchCursor(_:adapter:arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] - - ["", "DatabaseValueConvertible", true, "fetchOne(_:adapter:arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] - - ["", "DatabaseValueConvertible", true, "fetchSet(_:adapter:arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] - - ["", "FetchableRecord", true, "fetchAll(_:adapter:arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] - - ["", "FetchableRecord", true, "fetchCursor(_:adapter:arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] - - ["", "FetchableRecord", true, "fetchOne(_:adapter:arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] - - ["", "FetchableRecord", true, "fetchSet(_:adapter:arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] - - ["", "FetchableRecord", true, "fetchAll(_:adapter:arguments:)", "", "", "Argument[arguments:]", "database-store", "manual"] - - ["", "FetchableRecord", true, "fetchCursor(_:adapter:arguments:)", "", "", "Argument[arguments:]", "database-store", "manual"] - - ["", "FetchableRecord", true, "fetchOne(_:adapter:arguments:)", "", "", "Argument[arguments:]", "database-store", "manual"] - - ["", "FetchableRecord", true, "fetchSet(_:adapter:arguments:)", "", "", "Argument[arguments:]", "database-store", "manual"] - - ["", "QueryType", true, "insert(_:)", "", "", "Argument[0]", "database-store", "manual"] - - ["", "QueryType", true, "update(_:)", "", "", "Argument[0]", "database-store", "manual"] - - ["", "QueryType", true, "insert(_:_:)", "", "", "Argument[0,1]", "database-store", "manual"] - - ["", "QueryType", true, "insert(_:or:)", "", "", "Argument[0]", "database-store", "manual"] - - ["", "QueryType", true, "insertMany(_:)", "", "", "Argument[0]", "database-store", "manual"] - - ["", "QueryType", true, "insertMany(_:or:)", "", "", "Argument[0]", "database-store", "manual"] - - ["", "QueryType", true, "update(_:_:)", "", "", "Argument[0,1]", "database-store", "manual"] - - ["", "QueryType", true, "update(_:or:)", "", "", "Argument[0]", "database-store", "manual"] - - ["", "QueryType", true, "upsert(_:onConflictOf:)", "", "", "Argument[0]", "database-store", "manual"] - - ["", "QueryType", true, "upsert(_:onConflictOf:setValues:)", "", "", "Argument[0]", "database-store", "manual"] - - ["", "QueryType", true, "upsert(_:onConflictOf:setValues:)", "", "", "Argument[setValues:]", "database-store", "manual"] - - ["", "Row", true, "fetchAll(_:adapter:arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] - - ["", "Row", true, "fetchCursor(_:adapter:arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] - - ["", "Row", true, "fetchOne(_:adapter:arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] - - ["", "Row", true, "fetchSet(_:adapter:arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] - - ["", "SQL", true, "append(arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] - - ["", "SQL", true, "init(arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] - - ["", "SQLRequest", true, "init(adapter:arguments:cached:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] - - ["", "SQLStatementCursor", true, "init(arguments:database:prepFlags:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] - - ["", "Statement", true, "init(_:_:)", "", "", "Argument[1]", "database-store", "manual"] - - ["", "Statement", true, "scalar(_:)", "", "", "Argument[0]", "database-store", "manual"] - - ["", "Statement", true, "bind(_:)", "", "", "Argument[0]", "database-store", "manual"] - - ["", "Statement", true, "execute(arguments:)", "", "", "Argument[arguments:]", "database-store", "manual"] - - ["", "Statement", true, "run(_:)", "", "", "Argument[0]", "database-store", "manual"] - - ["", "Statement", true, "setArguments(_:)", "", "", "Argument[0]", "database-store", "manual"] - - ["", "TableRecord", true, "filter(arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] - - ["", "TableRecord", true, "order(arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] - - ["", "TableRecord", true, "select(arguments:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] - - ["", "TableRecord", true, "select(arguments:as:sql:)", "", "", "Argument[arguments:]", "database-store", "manual"] - - ["", "ArchiveByteStream", true, "fileStream(automaticClose:fd:)", "", "", "Argument[fd:]", "path-injection", "manual"] - - ["", "ArchiveByteStream", true, "fileStream(mode:options:path:permissions:)", "", "", "Argument[path:]", "path-injection", "manual"] - - ["", "ArchiveByteStream", true, "withFileStream(_:automaticClose:fd:)", "", "", "Argument[fd:]", "path-injection", "manual"] - - ["", "ArchiveByteStream", true, "withFileStream(_:mode:options:path:permissions:)", "", "", "Argument[path:]", "path-injection", "manual"] - - ["", "Bundle", true, "init(url:)", "", "", "Argument[url:]", "path-injection", "manual"] - - ["", "Bundle", true, "init(path:)", "", "", "Argument[path:]", "path-injection", "manual"] - - ["", "DatabasePool", true, "init(configuration:path:)", "", "", "Argument[path:]", "path-injection", "manual"] - - ["", "DatabaseQueue", true, "init(configuration:path:)", "", "", "Argument[path:]", "path-injection", "manual"] - - ["", "DatabaseSnapshotPool", true, "init(configuration:path:)", "", "", "Argument[path:]", "path-injection", "manual"] - - ["", "NIOFileHandle", true, "init(path:)", "", "", "Argument[path:]", "path-injection", "manual"] - - ["", "NIOFileHandle", true, "init(descriptor:)", "", "", "Argument[descriptor:]", "path-injection", "manual"] - - ["", "NIOFileHandle", true, "init(flags:mode:path:)", "", "", "Argument[path:]", "path-injection", "manual"] - - ["", "NSKeyedUnarchiver", true, "unarchiveObject(withFile:)", "", "", "Argument[withFile:]", "path-injection", "manual"] - - ["", "SerializedDatabase", true, "init(configuration:defaultLabel:path:purpose:)", "", "", "Argument[path:]", "path-injection", "manual"] - - addsTo: - pack: codeql/unified-all - extensible: legacySummaryModel - data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance - - ["", "UnsafeMutableRawPointer", true, "init(_:)", "", "", "Argument[0].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "UnsafeMutableRawPointer", true, "init(_:)", "", "", "Argument[0].OptionalSome.CollectionElement", "ReturnValue.OptionalSome.CollectionElement", "value", "manual"] - - ["", "UnsafeMutableRawPointer", true, "init(mutating:)", "", "", "Argument[mutating:].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "UnsafeMutableRawPointer", true, "init(mutating:)", "", "", "Argument[mutating:].OptionalSome.CollectionElement", "ReturnValue.OptionalSome.CollectionElement", "value", "manual"] - - ["", "UnsafeMutableRawPointer", true, "storeBytes(as:of:toByteOffset:)", "", "", "Argument[of:]", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawPointer", true, "withMemoryRebound(_:capacity:to:)", "", "", "Argument[self].CollectionElement", "Argument[2].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawPointer", true, "withMemoryRebound(_:capacity:to:)", "", "", "Argument[2].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "UnsafeMutableRawPointer", true, "withMemoryRebound(_:capacity:to:)", "", "", "Argument[2].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawPointer", true, "loadUnaligned(as:fromByteOffset:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "UnsafeMutableRawPointer", true, "load(as:fromByteOffset:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "UnsafeMutableRawPointer", true, "assumingMemoryBound(to:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawPointer", true, "bindMemory(capacity:to:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawPointer", true, "alignedDown(toMultipleOf:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawPointer", true, "alignedUp(toMultipleOf:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawPointer", true, "alignedDown(for:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawPointer", true, "alignedUp(for:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawPointer", true, "moveInitializeMemory(as:count:from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawPointer", true, "moveInitializeMemory(as:count:from:)", "", "", "Argument[from:].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawPointer", true, "initializeMemory(as:count:from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawPointer", true, "initializeMemory(as:count:from:)", "", "", "Argument[from:].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawPointer", true, "initializeMemory(as:count:repeating:)", "", "", "Argument[repeating:]", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawPointer", true, "initializeMemory(as:count:repeating:)", "", "", "Argument[repeating:]", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawPointer", true, "initializeMemory(as:to:)", "", "", "Argument[to:]", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawPointer", true, "initializeMemory(as:to:)", "", "", "Argument[to:]", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawPointer", true, "initializeMemory(as:from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawPointer", true, "initializeMemory(as:from:)", "", "", "Argument[from:].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawPointer", true, "copyBytes(count:from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawPointer", true, "copyMemory(count:from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawPointer", true, "initializeMemory(as:at:count:to:)", "", "", "Argument[to:]", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawPointer", true, "initializeMemory(as:at:count:to:)", "", "", "Argument[to:]", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "UnsignedInteger", true, "init(exactly:)", "", "", "Argument[exactly:]", "ReturnValue.OptionalSome", "value", "manual"] - - ["", "UnsignedInteger", true, "init(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "FixedWidthInteger", true, "init(littleEndian:)", "", "", "Argument[littleEndian:]", "ReturnValue", "taint", "manual"] - - ["", "FixedWidthInteger", true, "init(bigEndian:)", "", "", "Argument[bigEndian:]", "ReturnValue", "taint", "manual"] - - ["", "FixedWidthInteger", true, "dividingFullWidth(_:)", "", "", "Argument[self]", "ReturnValue.TupleElement[0,1]", "taint", "manual"] - - ["", "FixedWidthInteger", true, "dividingFullWidth(_:)", "", "", "Argument[1].TupleElement[0,1]", "ReturnValue.TupleElement[0,1]", "taint", "manual"] - - ["", "FixedWidthInteger", true, "multipliedFullWidth(by:)", "", "", "Argument[self,by:]", "ReturnValue.TupleElement[0,1]", "taint", "manual"] - - ["", "FixedWidthInteger", true, "init(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "FixedWidthInteger", true, "remainderReportingOverflow(dividingBy:)", "", "", "Argument[self,dividingBy:]", "ReturnValue.TupleElement[0]", "taint", "manual"] - - ["", "FixedWidthInteger", true, "dividedReportingOverflow(by:)", "", "", "Argument[self,by:]", "ReturnValue.TupleElement[0]", "taint", "manual"] - - ["", "FixedWidthInteger", true, "multipliedReportingOverflow(by:)", "", "", "Argument[self,by:]", "ReturnValue.TupleElement[0]", "taint", "manual"] - - ["", "FixedWidthInteger", true, "subtractingReportingOverflow(_:)", "", "", "Argument[self,0]", "ReturnValue.TupleElement[0]", "taint", "manual"] - - ["", "FixedWidthInteger", true, "addingReportingOverflow(_:)", "", "", "Argument[self,0]", "ReturnValue.TupleElement[0]", "taint", "manual"] - - ["", "FixedWidthInteger", true, "init(bitPattern:)", "", "", "Argument[bitPattern:]", "ReturnValue", "taint", "manual"] - - ["", "FixedWidthInteger", true, "init(clamping:)", "", "", "Argument[clamping:]", "ReturnValue", "taint", "manual"] - - ["", "FixedWidthInteger", true, "init(truncatingIfNeeded:)", "", "", "Argument[truncatingIfNeeded:]", "ReturnValue", "taint", "manual"] - - ["", "FixedWidthInteger", true, "init(_:radix:)", "", "", "Argument[0]", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "FixedWidthInteger", true, "init(truncating:)", "", "", "Argument[truncating:]", "ReturnValue", "taint", "manual"] - - ["", "Numeric", true, "init(exactly:)", "", "", "Argument[exactly:]", "ReturnValue.OptionalSome", "value", "manual"] - - ["", "Numeric", true, "init(bitPattern:)", "", "", "Argument[bitPattern:]", "ReturnValue", "taint", "manual"] - - ["", "Numeric", true, "init(truncating:)", "", "", "Argument[truncating:]", "ReturnValue", "taint", "manual"] - - ["", "BinaryInteger", true, "quotientAndRemainder(dividingBy:)", "", "", "Argument[self,dividingBy:]", "ReturnValue.TupleElement[0,1]", "taint", "manual"] - - ["", "BinaryInteger", true, "init(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "BinaryInteger", true, "init(clamping:)", "", "", "Argument[clamping:]", "ReturnValue", "taint", "manual"] - - ["", "BinaryInteger", true, "init(truncatingIfNeeded:)", "", "", "Argument[truncatingIfNeeded:]", "ReturnValue", "taint", "manual"] - - ["", "BinaryInteger", true, "advanced(by:)", "", "", "Argument[self,by:]", "ReturnValue", "taint", "manual"] - - ["", "BinaryInteger", true, "distance(to:)", "", "", "Argument[self,to:]", "ReturnValue", "taint", "manual"] - - ["", "BinaryInteger", true, "formatted()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "BinaryInteger", true, "formatted(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "BinaryInteger", true, "init(_:format:lenient:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "BinaryInteger", true, "init(_:strategy:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "Sequence", true, "withContiguousStorageIfAvailable(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "Sequence", true, "withContiguousStorageIfAvailable(_:)", "", "", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "value", "manual"] - - ["", "Sequence", true, "withContiguousStorageIfAvailable(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue.OptionalSome", "value", "manual"] - - ["", "Sequence", true, "makeIterator()", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Sequence", true, "suffix(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Sequence", true, "suffix(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Sequence", true, "dropLast(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Sequence", true, "dropLast(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Sequence", true, "split(maxSplits:omittingEmptySubsequences:whereSeparator:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Sequence", true, "split(maxSplits:omittingEmptySubsequences:whereSeparator:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Sequence", true, "prefix(while:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Sequence", true, "prefix(while:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Sequence", true, "prefix(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Sequence", true, "prefix(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Sequence", true, "drop(while:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Sequence", true, "drop(while:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Sequence", true, "dropFirst(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Sequence", true, "dropFirst(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Sequence", true, "split(maxSplits:omittingEmptySubsequences:separator:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Sequence", true, "split(maxSplits:omittingEmptySubsequences:separator:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Sequence", true, "shuffled()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Sequence", true, "shuffled()", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Sequence", true, "shuffled(using:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "Sequence", true, "shuffled(using:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Sequence", true, "forEach(_:)", "", "", "Argument[self].CollectionElement", "Argument[0].Parameter[0]", "value", "manual"] - - ["", "Sequence", true, "joined()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Sequence", true, "joined()", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "Sequence", true, "joined()", "", "", "Argument[self].CollectionElement.CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Sequence", true, "joined(separator:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "Sequence", true, "joined(separator:)", "", "", "Argument[self].CollectionElement.CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Sequence", true, "joined(separator:)", "", "", "Argument[separator:,self]", "ReturnValue", "taint", "manual"] - - ["", "Sequence", true, "reversed()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Sequence", true, "reversed()", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Sequence", true, "first(where:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "value", "manual"] - - ["", "Sequence", true, "enumerated()", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement.TupleElement[1]", "value", "manual"] - - ["", "Sequence", true, "max(by:)", "", "", "Argument[self].CollectionElement", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "Sequence", true, "min(by:)", "", "", "Argument[self].CollectionElement", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "Sequence", true, "max()", "", "", "Argument[self].CollectionElement", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "Sequence", true, "min()", "", "", "Argument[self].CollectionElement", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "Sequence", true, "sorted()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Sequence", true, "sorted()", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Sequence", true, "sorted(by:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Sequence", true, "sorted(by:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Sequence", true, "formatted()", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "UnsafeBufferPointer", true, "init(_:)", "", "", "Argument[0].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "UnsafeBufferPointer", true, "init(count:start:)", "", "", "Argument[start:].OptionalSome.CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "UnsafeBufferPointer", true, "withMemoryRebound(_:to:)", "", "", "Argument[self].CollectionElement", "Argument[1].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "UnsafeBufferPointer", true, "withMemoryRebound(_:to:)", "", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "UnsafeBufferPointer", true, "init(rebasing:)", "", "", "Argument[rebasing:].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "UnsafePointer", true, "withMemoryRebound(_:capacity:to:)", "", "", "Argument[self].CollectionElement", "Argument[2].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "UnsafePointer", true, "withMemoryRebound(_:capacity:to:)", "", "", "Argument[2].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "UnsafeMutablePointer", true, "init(_:)", "", "", "Argument[0].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "UnsafeMutablePointer", true, "init(_:)", "", "", "Argument[0].OptionalSome.CollectionElement", "ReturnValue.OptionalSome.CollectionElement", "value", "manual"] - - ["", "UnsafeMutablePointer", true, "init(mutating:)", "", "", "Argument[mutating:].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "UnsafeMutablePointer", true, "init(mutating:)", "", "", "Argument[mutating:].OptionalSome.CollectionElement", "ReturnValue.OptionalSome.CollectionElement", "value", "manual"] - - ["", "UnsafeMutablePointer", true, "withMemoryRebound(_:capacity:to:)", "", "", "Argument[self].CollectionElement", "Argument[2].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutablePointer", true, "withMemoryRebound(_:capacity:to:)", "", "", "Argument[2].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "UnsafeMutablePointer", true, "withMemoryRebound(_:capacity:to:)", "", "", "Argument[2].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutablePointer", true, "initialize(count:repeating:)", "", "", "Argument[repeating:]", "Argument[self].CollectionElement", "value", "manual"] - - ["", "UnsafeMutablePointer", true, "initialize(to:)", "", "", "Argument[to:]", "Argument[self].CollectionElement", "value", "manual"] - - ["", "UnsafeMutablePointer", true, "move()", "", "", "Argument[self].CollectionElement", "ReturnValue", "value", "manual"] - - ["", "UnsafeMutablePointer", true, "assign(count:repeating:)", "", "", "Argument[repeating:]", "Argument[self].CollectionElement", "value", "manual"] - - ["", "UnsafeMutablePointer", true, "update(count:repeating:)", "", "", "Argument[repeating:]", "Argument[self].CollectionElement", "value", "manual"] - - ["", "UnsafeMutablePointer", true, "assign(count:from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] - - ["", "UnsafeMutablePointer", true, "update(count:from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] - - ["", "UnsafeMutablePointer", true, "moveInitialize(count:from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] - - ["", "UnsafeMutablePointer", true, "initialize(count:from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] - - ["", "UnsafeMutablePointer", true, "moveUpdate(count:from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] - - ["", "UnsafeMutablePointer", true, "moveAssign(count:from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] - - ["", "UnsafeMutablePointer", true, "initialize(from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] - - ["", "UnsafeMutablePointer", true, "initialize(count:to:)", "", "", "Argument[to:]", "Argument[self].CollectionElement", "value", "manual"] - - ["", "UnsafeMutableBufferPointer", true, "init(count:start:)", "", "", "Argument[start:].OptionalSome.CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableBufferPointer", true, "init(mutating:)", "", "", "Argument[mutating:].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "UnsafeMutableBufferPointer", true, "update(repeating:)", "", "", "Argument[repeating:]", "Argument[self].CollectionElement", "value", "manual"] - - ["", "UnsafeMutableBufferPointer", true, "withMemoryRebound(_:to:)", "", "", "Argument[self].CollectionElement", "Argument[1].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableBufferPointer", true, "withMemoryRebound(_:to:)", "", "", "Argument[1].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableBufferPointer", true, "withMemoryRebound(_:to:)", "", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "UnsafeMutableBufferPointer", true, "moveElement(from:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "value", "manual"] - - ["", "UnsafeMutableBufferPointer", true, "initializeElement(at:to:)", "", "", "Argument[to:]", "Argument[self].CollectionElement", "value", "manual"] - - ["", "UnsafeMutableBufferPointer", true, "moveUpdate(fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] - - ["", "UnsafeMutableBufferPointer", true, "moveInitialize(fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] - - ["", "UnsafeMutableBufferPointer", true, "update(fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] - - ["", "UnsafeMutableBufferPointer", true, "update(from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableBufferPointer", true, "update(from:)", "", "", "Argument[from:].CollectionElement", "ReturnValue.TupleElement[0].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableBufferPointer", true, "initialize(fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] - - ["", "UnsafeMutableBufferPointer", true, "initialize(from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableBufferPointer", true, "initialize(from:)", "", "", "Argument[from:].CollectionElement", "ReturnValue.TupleElement[0].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableBufferPointer", true, "initialize(repeating:)", "", "", "Argument[repeating:]", "Argument[self].CollectionElement", "value", "manual"] - - ["", "UnsafeMutableBufferPointer", true, "init(rebasing:)", "", "", "Argument[rebasing:].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "UnsafeMutableBufferPointer", true, "assign(repeating:)", "", "", "Argument[repeating:]", "Argument[self].CollectionElement", "value", "manual"] - - ["", "ContiguousArray", true, "withUnsafeMutableBufferPointer(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "ContiguousArray", true, "withUnsafeMutableBufferPointer(_:)", "", "", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "value", "manual"] - - ["", "ContiguousArray", true, "withUnsafeMutableBufferPointer(_:)", "", "", "Argument[0].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] - - ["", "ContiguousArray", true, "withUnsafeMutableBufferPointer(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "ContiguousArray", true, "withUnsafeBufferPointer(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "ContiguousArray", true, "withUnsafeBufferPointer(_:)", "", "", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "value", "manual"] - - ["", "ContiguousArray", true, "withUnsafeBufferPointer(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "ContiguousArray", true, "withUnsafeMutableBytes(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "ContiguousArray", true, "withUnsafeMutableBytes(_:)", "", "", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "ContiguousArray", true, "withUnsafeMutableBytes(_:)", "", "", "Argument[0].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "ContiguousArray", true, "withUnsafeMutableBytes(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "Collection", true, "makeIterator()", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Collection", true, "removeFirst()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Collection", true, "suffix(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Collection", true, "suffix(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Collection", true, "dropLast(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Collection", true, "dropLast(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Collection", true, "randomElement()", "", "", "Argument[self].CollectionElement", "ReturnValue.OptionalSome", "value", "manual"] - - ["", "Collection", true, "randomElement(using:)", "", "", "Argument[self].CollectionElement", "ReturnValue.OptionalSome", "value", "manual"] - - ["", "Collection", true, "popFirst()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Collection", true, "split(maxSplits:omittingEmptySubsequences:whereSeparator:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Collection", true, "prefix(through:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Collection", true, "prefix(through:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Collection", true, "suffix(from:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Collection", true, "prefix(upTo:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Collection", true, "prefix(upTo:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Collection", true, "prefix(while:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Collection", true, "prefix(while:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Collection", true, "prefix(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Collection", true, "prefix(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Collection", true, "dropFirst(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Collection", true, "dropFirst(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Collection", true, "split(maxSplits:omittingEmptySubsequences:separator:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Collection", true, "flatMap(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Collection", true, "flatMap(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Collection", true, "trimmingPrefix(while:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Collection", true, "trimmingPrefix(while:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Collection", true, "trimmingPrefix(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Collection", true, "trimmingPrefix(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "UnsafeRawPointer", true, "init(_:)", "", "", "Argument[0].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "UnsafeRawPointer", true, "init(_:)", "", "", "Argument[0].OptionalSome.CollectionElement", "ReturnValue.OptionalSome.CollectionElement", "value", "manual"] - - ["", "UnsafeRawPointer", true, "withMemoryRebound(_:capacity:to:)", "", "", "Argument[self].CollectionElement", "Argument[2].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "UnsafeRawPointer", true, "withMemoryRebound(_:capacity:to:)", "", "", "Argument[2].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "UnsafeRawPointer", true, "loadUnaligned(as:fromByteOffset:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "UnsafeRawPointer", true, "load(as:fromByteOffset:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "UnsafeRawPointer", true, "assumingMemoryBound(to:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "UnsafeRawPointer", true, "bindMemory(capacity:to:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "UnsafeRawPointer", true, "alignedDown(toMultipleOf:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "UnsafeRawPointer", true, "alignedUp(toMultipleOf:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "UnsafeRawPointer", true, "alignedDown(for:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "UnsafeRawPointer", true, "alignedUp(for:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "Slice", true, "init(base:bounds:)", "", "", "Argument[base:].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Slice", true, "remove(at:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "value", "manual"] - - ["", "Slice", true, "insert(_:at:)", "", "", "Argument[0]", "Argument[self].CollectionElement", "value", "manual"] - - ["", "Slice", true, "insert(at:contentsOf:)", "", "", "Argument[contentsOf:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] - - ["", "Slice", true, "replaceSubrange(_:with:)", "", "", "Argument[with:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] - - ["", "Slice", true, "storeBytes(as:of:toByteOffset:)", "", "", "Argument[of:]", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "Slice", true, "update(repeating:)", "", "", "Argument[repeating:]", "Argument[self].CollectionElement", "value", "manual"] - - ["", "Slice", true, "loadUnaligned(as:fromByteOffset:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "Slice", true, "load(as:fromByteOffset:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "Slice", true, "assumingMemoryBound(to:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "Slice", true, "withMemoryRebound(_:to:)", "", "", "Argument[self].CollectionElement", "Argument[1].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "Slice", true, "withMemoryRebound(_:to:)", "", "", "Argument[1].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "Slice", true, "withMemoryRebound(_:to:)", "", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "Slice", true, "bindMemory(to:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "Slice", true, "moveInitializeMemory(as:fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "Slice", true, "moveInitializeMemory(as:fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "Slice", true, "initializeMemory(as:fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "Slice", true, "initializeMemory(as:fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "Slice", true, "initializeMemory(as:from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "Slice", true, "initializeMemory(as:from:)", "", "", "Argument[from:].CollectionElement", "ReturnValue.TupleElement[0,1].CollectionElement", "taint", "manual"] - - ["", "Slice", true, "initializeMemory(as:repeating:)", "", "", "Argument[repeating:]", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "Slice", true, "initializeMemory(as:repeating:)", "", "", "Argument[repeating:]", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "Slice", true, "copyBytes(from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "Slice", true, "moveElement(from:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "value", "manual"] - - ["", "Slice", true, "initializeElement(at:to:)", "", "", "Argument[to:]", "Argument[self].CollectionElement", "value", "manual"] - - ["", "Slice", true, "moveUpdate(fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] - - ["", "Slice", true, "moveInitialize(fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] - - ["", "Slice", true, "update(fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] - - ["", "Slice", true, "update(from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] - - ["", "Slice", true, "update(from:)", "", "", "Argument[from:].CollectionElement", "ReturnValue.TupleElement[0].CollectionElement", "taint", "manual"] - - ["", "Slice", true, "initialize(fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "Slice", true, "initialize(from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "Slice", true, "initialize(from:)", "", "", "Argument[from:].CollectionElement", "ReturnValue.TupleElement[0,1].CollectionElement", "taint", "manual"] - - ["", "Slice", true, "initialize(repeating:)", "", "", "Argument[repeating:]", "Argument[self].CollectionElement", "value", "manual"] - - ["", "Slice", true, "withContiguousMutableStorageIfAvailable(_:to:)", "", "", "Argument[self].CollectionElement", "Argument[to:].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "Slice", true, "withContiguousMutableStorageIfAvailable(_:to:)", "", "", "Argument[to:].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "Slice", true, "withContiguousMutableStorageIfAvailable(_:to:)", "", "", "Argument[to:].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "SignedInteger", true, "init(exactly:)", "", "", "Argument[exactly:]", "ReturnValue.OptionalSome", "value", "manual"] - - ["", "SignedInteger", true, "init(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "BidirectionalCollection", true, "popLast()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "BidirectionalCollection", true, "suffix(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "BidirectionalCollection", true, "suffix(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "BidirectionalCollection", true, "dropLast(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "BidirectionalCollection", true, "dropLast(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "BidirectionalCollection", true, "suffix(from:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "BidirectionalCollection", true, "last(where:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "BidirectionalCollection", true, "joined(separator:)", "", "", "Argument[self,separator:]", "ReturnValue", "taint", "manual"] - - ["", "BidirectionalCollection", true, "joined(separator:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "BidirectionalCollection", true, "joined(separator:)", "", "", "Argument[self].CollectionElement.CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "BidirectionalCollection", true, "reversed()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "BidirectionalCollection", true, "reversed()", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "String", true, "init(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "init(_:)", "", "", "Argument[0]", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "String", true, "init(count:repeating:)", "", "", "Argument[repeating:]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "insert(at:contentsOf:)", "", "", "Argument[contentsOf:]", "Argument[self]", "taint", "manual"] - - ["", "String", true, "init(extendedGraphemeClusterLiteral:)", "", "", "Argument[extendedGraphemeClusterLiteral:]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "init(unicodeScalarLiteral:)", "", "", "Argument[unicodeScalarLiteral:]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "encode(to:)", "", "", "Argument[self]", "Argument[to:]", "taint", "manual"] - - ["", "String", true, "init(from:)", "", "", "Argument[from:]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "init(from:)", "", "", "Argument[from:]", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "String", true, "randomElement()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "randomElement(using:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "split(maxSplits:omittingEmptySubsequences:whereSeparator:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "init(stringLiteral:)", "", "", "Argument[stringLiteral:]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "init(stringInterpolation:)", "", "", "Argument[stringInterpolation:]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "decodeCString(_:as:repairingInvalidCodeUnits:)", "", "", "Argument[0]", "ReturnValue.TupleElement[0]", "taint", "manual"] - - ["", "String", true, "decodeCString(_:as:repairingInvalidCodeUnits:)", "", "", "Argument[0].CollectionElement", "ReturnValue.TupleElement[0]", "taint", "manual"] - - ["", "String", true, "init(validatingUTF8:)", "", "", "Argument[validatingUTF8:]", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "String", true, "init(validatingUTF8:)", "", "", "Argument[validatingUTF8:].CollectionElement", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "String", true, "enumerated()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "max(by:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "min(by:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "max()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "min()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "withUTF8(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "String", true, "withUTF8(_:)", "", "", "Argument[0].Parameter[0].CollectionElement", "Argument[self]", "taint", "manual"] - - ["", "String", true, "withUTF8(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "String", true, "init(initializingUTF8With:unsafeUninitializedCapacity:)", "", "", "Argument[initializingUTF8With:].Parameter[0].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "String", true, "init(_:radix:uppercase:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "init(validating:)", "", "", "Argument[validating:]", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "String", true, "init(describing:)", "", "", "Argument[describing:]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "init(contentsOf:)", "", "", "Argument[contentsOf:]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "init(contentsOfFile:)", "", "", "Argument[contentsOfFile:]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "init(contentsOf:encoding:)", "", "", "Argument[contentsOf:]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "init(contentsOfFile:encoding:)", "", "", "Argument[contentsOfFile:]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "init(contentsOfFile:usedEncoding:)", "", "", "Argument[contentsOfFile:]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "init(platformString:)", "", "", "Argument[platformString:]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "init(platformString:)", "", "", "Argument[platformString:].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "String", true, "withPlatformString(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "String", true, "withPlatformString(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "String", true, "init(bytesNoCopy:encoding:freeWhenDone:length:)", "", "", "Argument[bytesNoCopy:].CollectionElement", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "String", true, "init(cString:encoding:)", "", "", "Argument[cString:]", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "String", true, "init(cString:encoding:)", "", "", "Argument[cString:].CollectionElement", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "String", true, "init(data:encoding:)", "", "", "Argument[data:]", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "String", true, "init(_:format:)", "", "", "Argument[format:]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "init(_:format:)", "", "", "Argument[1].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "String", true, "init(arguments:format:)", "", "", "Argument[format:]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "init(arguments:format:)", "", "", "Argument[arguments:].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "String", true, "init(_:format:locale:)", "", "", "Argument[format:]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "init(_:format:locale:)", "", "", "Argument[2].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "String", true, "init(arguments:format:locale:)", "", "", "Argument[format:]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "init(arguments:format:locale:)", "", "", "Argument[arguments:].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "String", true, "init(utf8String:)", "", "", "Argument[utf8String:]", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "String", true, "init(utf8String:)", "", "", "Argument[utf8String:].CollectionElement", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "String", true, "localizedStringWithFormat(_:_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "localizedStringWithFormat(_:_:)", "", "", "Argument[1].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "String", true, "init(bytes:encoding:)", "", "", "Argument[bytes:].CollectionElement", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "String", true, "init(contendsOf:usedEncoding:)", "", "", "Argument[contendsOf:]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "init(decoding:)", "", "", "Argument[decoding:]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "init(count:utf16CodeUnits:)", "", "", "Argument[utf16CodeUnits:].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "String", true, "init(count:freeWhenDone:utf16CodeUnitsNoCopy:)", "", "", "Argument[utf16CodeUnitsNoCopy:].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "String", true, "init(validatingPlatformString:)", "", "", "Argument[validatingPlatformString:]", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "String", true, "init(validatingPlatformString:)", "", "", "Argument[validatingPlatformString:].CollectionElement", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "String", true, "subscript(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "String", true, "withMutableCharacters(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0]", "value", "manual"] - - ["", "String", true, "withMutableCharacters(_:)", "", "", "Argument[0].Parameter[0]", "Argument[self]", "value", "manual"] - - ["", "String", true, "withMutableCharacters(_:)", "", "", "Argument[0].Parameter[0].CollectionElement", "Argument[self]", "taint", "manual"] - - ["", "String", true, "withMutableCharacters(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "BinaryFloatingPoint", true, "init(exponentBitPattern:sign:significandBitPattern:)", "", "", "Argument[sign:,exponentBitPattern:,significandBitPattern:]", "ReturnValue", "taint", "manual"] - - ["", "BinaryFloatingPoint", true, "formatted()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "BinaryFloatingPoint", true, "formatted(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "BinaryFloatingPoint", true, "init(_:format:lenient:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "BinaryFloatingPoint", true, "init(_:strategy:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "UnsafeRawBufferPointer", true, "init(_:)", "", "", "Argument[0].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "UnsafeRawBufferPointer", true, "init(count:start:)", "", "", "Argument[start:].OptionalSome.CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "UnsafeRawBufferPointer", true, "loadUnaligned(as:fromByteOffset:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "UnsafeRawBufferPointer", true, "load(as:fromByteOffset:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "UnsafeRawBufferPointer", true, "assumingMemoryBound(to:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "UnsafeRawBufferPointer", true, "withMemoryRebound(_:to:)", "", "", "Argument[self].CollectionElement", "Argument[1].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "UnsafeRawBufferPointer", true, "withMemoryRebound(_:to:)", "", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "UnsafeRawBufferPointer", true, "bindMemory(to:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "UnsafeRawBufferPointer", true, "init(rebasing:)", "", "", "Argument[rebasing:].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Array", true, "withUnsafeMutableBufferPointer(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "Array", true, "withUnsafeMutableBufferPointer(_:)", "", "", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "value", "manual"] - - ["", "Array", true, "withUnsafeMutableBufferPointer(_:)", "", "", "Argument[0].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] - - ["", "Array", true, "withUnsafeMutableBufferPointer(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "Array", true, "withUnsafeBufferPointer(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "Array", true, "withUnsafeBufferPointer(_:)", "", "", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "value", "manual"] - - ["", "Array", true, "withUnsafeBufferPointer(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "Array", true, "makeIterator()", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Array", true, "insert(_:at:)", "", "", "Argument[0]", "Argument[self].CollectionElement", "value", "manual"] - - ["", "Array", true, "insert(_:at:)", "", "", "Argument[at:]", "Argument[self]", "taint", "manual"] - - ["", "Array", true, "init(arrayLiteral:)", "", "", "Argument[arrayLiteral:].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Array", true, "withUnsafeBytes(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "Array", true, "withUnsafeBytes(_:)", "", "", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "Array", true, "withUnsafeBytes(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "Array", true, "withUnsafeMutableBytes(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "Array", true, "withUnsafeMutableBytes(_:)", "", "", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "Array", true, "withUnsafeMutableBytes(_:)", "", "", "Argument[0].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "Array", true, "withUnsafeMutableBytes(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "MutableCollection", true, "withContiguousMutableStorageIfAvailable(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "MutableCollection", true, "withContiguousMutableStorageIfAvailable(_:)", "", "", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "value", "manual"] - - ["", "MutableCollection", true, "withContiguousMutableStorageIfAvailable(_:)", "", "", "Argument[0].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] - - ["", "MutableCollection", true, "withContiguousMutableStorageIfAvailable(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue.OptionalSome", "value", "manual"] - - ["", "RangeReplaceableCollection", true, "init(_:)", "", "", "Argument[0]", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "RangeReplaceableCollection", true, "init(_:)", "", "", "Argument[0].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "RangeReplaceableCollection", true, "append(_:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] - - ["", "RangeReplaceableCollection", true, "remove(at:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "RangeReplaceableCollection", true, "insert(_:at:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] - - ["", "RangeReplaceableCollection", true, "append(contentsOf:)", "", "", "Argument[contentsOf:]", "Argument[self]", "taint", "manual"] - - ["", "RangeReplaceableCollection", true, "init(count:repeating:)", "", "", "Argument[repeating:]", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "RangeReplaceableCollection", true, "removeFirst()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "RangeReplaceableCollection", true, "replaceSubrange(_:with:)", "", "", "Argument[with:]", "Argument[self]", "taint", "manual"] - - ["", "RangeReplaceableCollection", true, "replaceSubrange(_:with:)", "", "", "Argument[with:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] - - ["", "RangeReplaceableCollection", true, "removeLast()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "IteratorProtocol", true, "next()", "", "", "Argument[self].CollectionElement", "ReturnValue.OptionalSome", "value", "manual"] - - ["", "UnsafeMutableRawBufferPointer", true, "init(_:)", "", "", "Argument[0].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "UnsafeMutableRawBufferPointer", true, "init(count:start:)", "", "", "Argument[start:].OptionalSome.CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawBufferPointer", true, "init(mutating:)", "", "", "Argument[mutating:].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "UnsafeMutableRawBufferPointer", true, "storeBytes(as:of:toByteOffset:)", "", "", "Argument[of:]", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawBufferPointer", true, "loadUnaligned(as:fromByteOffset:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "UnsafeMutableRawBufferPointer", true, "load(as:fromByteOffset:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "UnsafeMutableRawBufferPointer", true, "assumingMemoryBound(to:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawBufferPointer", true, "withMemoryRebound(_:to:)", "", "", "Argument[self].CollectionElement", "Argument[1].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawBufferPointer", true, "withMemoryRebound(_:to:)", "", "", "Argument[1].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawBufferPointer", true, "withMemoryRebound(_:to:)", "", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "UnsafeMutableRawBufferPointer", true, "bindMemory(to:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawBufferPointer", true, "moveInitializeMemory(as:fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawBufferPointer", true, "moveInitializeMemory(as:fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawBufferPointer", true, "initializeMemory(as:fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawBufferPointer", true, "initializeMemory(as:fromContentsOf:)", "", "", "Argument[fromContentsOf:].CollectionElement", "ReturnValue.TupleElement[0,1].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawBufferPointer", true, "initializeMemory(as:from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawBufferPointer", true, "initializeMemory(as:from:)", "", "", "Argument[from:].CollectionElement", "ReturnValue.TupleElement[0,1].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawBufferPointer", true, "initializeMemory(as:repeating:)", "", "", "Argument[repeating:]", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawBufferPointer", true, "initializeMemory(as:repeating:)", "", "", "Argument[repeating:]", "ReturnValue.TupleElement[0,1].CollectionElement", "taint", "manual"] - - ["", "UnsafeMutableRawBufferPointer", true, "copyBytes(from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] - - ["", "UnsafeMutableRawBufferPointer", true, "init(rebasing:)", "", "", "Argument[rebasing:].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "UnsafeMutableRawBufferPointer", true, "copyMemory(from:)", "", "", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] - - ["", "LosslessStringConvertible", true, "init(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "RawRepresentable", true, "init(rawValue:)", "", "", "Argument[rawValue:]", "ReturnValue", "taint", "manual"] - - ["", "Dictionary", true, "makeIterator()", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Dictionary", true, "updateValue(_:forKey:)", "", "", "Argument[0]", "Argument[self].CollectionElement.TupleElement[1]", "value", "manual"] - - ["", "Dictionary", true, "updateValue(_:forKey:)", "", "", "Argument[forKey:]", "Argument[self].CollectionElement.TupleElement[0]", "value", "manual"] - - ["", "Dictionary", true, "updateValue(_:forKey:)", "", "", "Argument[self].CollectionElement.TupleElement[1]", "ReturnValue.OptionalSome", "value", "manual"] - - ["", "Set", true, "init(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "Set", true, "init(_:)", "", "", "Argument[0].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Set", true, "remove(at:)", "", "", "Argument[self].CollectionElement", "ReturnValue", "value", "manual"] - - ["", "Set", true, "removeFirst()", "", "", "Argument[self].CollectionElement", "ReturnValue", "value", "manual"] - - ["", "Set", true, "filter(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "Set", true, "insert(_:)", "", "", "Argument[0]", "Argument[self].CollectionElement", "value", "manual"] - - ["", "Set", true, "insert(_:)", "", "", "Argument[0]", "ReturnValue.TupleElement[1]", "taint", "manual"] - - ["", "Set", true, "intersection(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "Set", true, "subtracting(_:)", "", "", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "Set", true, "symmetricDifference(_:)", "", "", "Argument[self,0].CollectionElement", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "Set", true, "union(_:)", "", "", "Argument[self,0].CollectionElement", "ReturnValue.CollectionElement", "value", "manual"] - - ["", "Set", true, "update(with:)", "", "", "Argument[with:]", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "Set", true, "update(with:)", "", "", "Argument[with:]", "Argument[self].CollectionElement", "value", "manual"] - - ["", "Set", true, "remove(_:)", "", "", "Argument[0]", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "Set", true, "formSymmetricDifference(_:)", "", "", "Argument[0].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "Set", true, "formUnion(_:)", "", "", "Argument[0].CollectionElement", "Argument[self].CollectionElement", "value", "manual"] - - ["", "TextOutputStreamable", true, "write(to:)", "", "", "Argument[self]", "Argument[to:]", "taint", "manual"] - - ["", "TextOutputStream", true, "write(_:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] - - ["", "Substring", true, "withUTF8(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "Substring", true, "withUTF8(_:)", "", "", "Argument[0].Parameter[0].CollectionElement", "Argument[self]", "taint", "manual"] - - ["", "Substring", true, "withUTF8(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "StringProtocol", true, "withCString(_:encodedAs:)", "", "", "Argument[self]", "Argument[1].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "StringProtocol", true, "withCString(_:encodedAs:)", "", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "StringProtocol", true, "withCString(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "StringProtocol", true, "withCString(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "StringProtocol", true, "init(as:decodingCString:)", "", "", "Argument[decodingCString:].OptionalSome.CollectionElement", "ReturnValue.OptionalSome.TupleElement[0]", "taint", "manual"] - - ["", "StringProtocol", true, "init(cString:)", "", "", "Argument[cString:]", "ReturnValue", "taint", "manual"] - - ["", "StringProtocol", true, "init(cString:)", "", "", "Argument[cString:].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "StringProtocol", true, "init(as:decoding:)", "", "", "Argument[decoding:]", "ReturnValue", "taint", "manual"] - - ["", "StringProtocol", true, "uppercased()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "StringProtocol", true, "lowercased()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "StringProtocol", true, "getBytes(_:encoding:maxLength:options:range:remaining:usedLength:)", "", "", "Argument[self]", "Argument[0].CollectionElement", "taint", "manual"] - - ["", "StringProtocol", true, "getCString(_:encoding:maxLength:)", "", "", "Argument[self]", "Argument[0].CollectionElement", "taint", "manual"] - - ["", "StringProtocol", true, "appending(_:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] - - ["", "StringProtocol", true, "addingPercentEscapes(using:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "StringProtocol", true, "appendingFormat(_:_:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] - - ["", "StringProtocol", true, "appendingFormat(_:_:)", "", "", "Argument[1].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "StringProtocol", true, "applyingTransform(_:reverse:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "StringProtocol", true, "cString(using:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "StringProtocol", true, "capitalized(with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "StringProtocol", true, "completePath(caseSensitive:filterTypes:into:matchesInto:)", "", "", "Argument[self]", "Argument[into:].CollectionElement", "taint", "manual"] - - ["", "StringProtocol", true, "completePath(caseSensitive:filterTypes:into:matchesInto:)", "", "", "Argument[self]", "Argument[matchesInto:].CollectionElement.CollectionElement", "taint", "manual"] - - ["", "StringProtocol", true, "components(separatedBy:)", "", "", "Argument[self]", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "StringProtocol", true, "data(allowLossyConversion:using:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "StringProtocol", true, "folding(locale:options:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "StringProtocol", true, "lowercased(with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "StringProtocol", true, "padding(startingAt:toLength:withPad:)", "", "", "Argument[withPad:]", "ReturnValue", "taint", "manual"] - - ["", "StringProtocol", true, "padding(startingAt:toLength:withPad:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "StringProtocol", true, "propertyList()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "StringProtocol", true, "propertyListFromStringsFileFormat()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "StringProtocol", true, "replacingCharacters(in:with:)", "", "", "Argument[with:]", "ReturnValue", "taint", "manual"] - - ["", "StringProtocol", true, "replacingCharacters(in:with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "StringProtocol", true, "replacingOccurrences(of:options:range:with:)", "", "", "Argument[with:]", "ReturnValue", "taint", "manual"] - - ["", "StringProtocol", true, "replacingOccurrences(of:options:range:with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "StringProtocol", true, "replacingPercentEscapes(using:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "StringProtocol", true, "substring(from:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "StringProtocol", true, "substring(with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "StringProtocol", true, "trimmingCharacters(in:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "StringProtocol", true, "uppercased(with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "StringProtocol", true, "addingPercentEncoding(withAllowedCharacter:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Strideable", true, "advanced(by:)", "", "", "Argument[self,by:]", "ReturnValue", "taint", "manual"] - - ["", "Strideable", true, "distance(to:)", "", "", "Argument[self,to:]", "ReturnValue", "taint", "manual"] - - ["", "FloatingPoint", true, "init(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "FloatingPoint", true, "rounded(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "FloatingPoint", true, "maximumMagnitude(_:_:)", "", "", "Argument[0,1]", "ReturnValue", "taint", "manual"] - - ["", "FloatingPoint", true, "minimumMagnitude(_:_:)", "", "", "Argument[0,1]", "ReturnValue", "taint", "manual"] - - ["", "FloatingPoint", true, "maximum(_:_:)", "", "", "Argument[0,1]", "ReturnValue", "taint", "manual"] - - ["", "FloatingPoint", true, "minimum(_:_:)", "", "", "Argument[0,1]", "ReturnValue", "taint", "manual"] - - ["", "FloatingPoint", true, "addProduct(_:_:)", "", "", "Argument[self,0,1]", "Argument[self]", "taint", "manual"] - - ["", "FloatingPoint", true, "addingProduct(_:_:)", "", "", "Argument[self,0,1]", "ReturnValue", "taint", "manual"] - - ["", "FloatingPoint", true, "squareRoot()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "FloatingPoint", true, "formTruncatingRemainder(dividingBy:)", "", "", "Argument[self,dividingBy:]", "Argument[self]", "taint", "manual"] - - ["", "FloatingPoint", true, "truncatingRemainder(dividingBy:)", "", "", "Argument[self,dividingBy:]", "ReturnValue", "taint", "manual"] - - ["", "FloatingPoint", true, "formRemainder(dividingBy:)", "", "", "Argument[self,dividingBy:]", "Argument[self]", "taint", "manual"] - - ["", "FloatingPoint", true, "remainder(dividingBy:)", "", "", "Argument[self,dividingBy:]", "ReturnValue", "taint", "manual"] - - ["", "FloatingPoint", true, "init(magnitudeOf:signOf:)", "", "", "Argument[magnitudeOf:]", "ReturnValue", "taint", "manual"] - - ["", "FloatingPoint", true, "init(exponent:sign:significand:)", "", "", "Argument[exponent:,significand:]", "ReturnValue", "taint", "manual"] - - ["", "FloatingPoint", true, "rounded()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "OptionSet", true, "init(rawValue:)", "", "", "Argument[rawValue:]", "ReturnValue", "taint", "manual"] - - ["", "", false, "min(_:_:)", "", "", "Argument[0,1]", "ReturnValue", "taint", "manual"] - - ["", "", false, "min(_:_:_:_:)", "", "", "Argument[0,1,2]", "ReturnValue", "taint", "manual"] - - ["", "", false, "min(_:_:_:_:)", "", "", "Argument[3].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "", false, "max(_:_:)", "", "", "Argument[0,1]", "ReturnValue", "taint", "manual"] - - ["", "", false, "max(_:_:_:_:)", "", "", "Argument[0,1,2]", "ReturnValue", "taint", "manual"] - - ["", "", false, "max(_:_:_:_:)", "", "", "Argument[3].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "", false, "unsafeBitCast(_:to:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "", false, "unsafeDowncast(_:to:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "", false, "dump(_:indent:maxDepth:maxItems:name:to:)", "", "", "Argument[0,name:]", "Argument[to:]", "taint", "manual"] - - ["", "", false, "abs(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "", false, "numericCast(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "", false, "withExtendedLifetime(_:_:)", "", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "", false, "withUnsafeMutablePointer(_:to:)", "", "", "Argument[to:]", "Argument[1].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "", false, "withUnsafeMutablePointer(_:to:)", "", "", "Argument[1].Parameter[0].CollectionElement", "Argument[to:]", "value", "manual"] - - ["", "", false, "withUnsafeMutablePointer(_:to:)", "", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "", false, "withUnsafePointer(_:to:)", "", "", "Argument[to:]", "Argument[1].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "", false, "withUnsafePointer(_:to:)", "", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "", false, "swap(_:_:)", "", "", "Argument[0]", "Argument[1]", "value", "manual"] - - ["", "", false, "swap(_:_:)", "", "", "Argument[1]", "Argument[0]", "value", "manual"] - - ["", "", false, "print(_:separator:terminator:to:)", "", "", "Argument[0].CollectionElement", "Argument[to:]", "taint", "manual"] - - ["", "", false, "print(_:separator:terminator:to:)", "", "", "Argument[separator:,terminator:]", "Argument[to:]", "taint", "manual"] - - ["", "", false, "debugPrint(_:separator:terminator:to:)", "", "", "Argument[0].CollectionElement", "Argument[to:]", "taint", "manual"] - - ["", "", false, "debugPrint(_:separator:terminator:to:)", "", "", "Argument[separator:,terminator:]", "Argument[to:]", "taint", "manual"] - - ["", "", false, "withUnsafeTemporaryAllocation(_:alignment:byteCount:)", "", "", "Argument[2].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "", false, "withUnsafeTemporaryAllocation(_:capacity:of:)", "", "", "Argument[2].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "", false, "withVaList(_:_:)", "", "", "Argument[0]", "Argument[1].Parameter[0]", "value", "manual"] - - ["", "", false, "getVaList(_:)", "", "", "Argument[0].CollectionElement", "ReturnValue", "value", "manual"] - - ["", "", false, "withUnsafeMutableBytes(_:of:)", "", "", "Argument[of:]", "Argument[1].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "", false, "withUnsafeMutableBytes(_:of:)", "", "", "Argument[1].Parameter[0].CollectionElement", "Argument[of:]", "taint", "manual"] - - ["", "", false, "withUnsafeMutableBytes(_:of:)", "", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "", false, "withUnsafeBytes(_:of:)", "", "", "Argument[of:]", "Argument[1].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "", false, "withUnsafeBytes(_:of:)", "", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "", false, "<-(_:_:)", "", "", "Argument[0,1]", "ReturnValue", "taint", "manual"] - - ["", "", false, "JSStringRetain(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "", false, "JSStringCreateWithUTF8CString(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "", false, "JSStringCreateWithCharacters(_:_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "init(_:)", "", "", "Argument[0]", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "URL", true, "init(fileReferenceLiteralResourceName:)", "", "", "Argument[fileReferenceLiteralResourceName:]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "init(string:)", "(String)", "", "Argument[string:]", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "URL", true, "appendingPathExtension(for:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "appendingPathComponent(_:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "appendingPathExtension(_:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "appendingPathComponent(_:isDirectory:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "appendingPathComponent(_:conformingTo:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "formatted()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "formatted(_:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "init(_:strategy:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "append(component:directoryHint:)", "", "", "Argument[self,component:]", "Argument[self]", "taint", "manual"] - - ["", "URL", true, "append(components:directoryHint:)", "", "", "Argument[self,components:]", "Argument[self]", "taint", "manual"] - - ["", "URL", true, "append(directoryHint:path:)", "", "", "Argument[self,path:]", "Argument[self]", "taint", "manual"] - - ["", "URL", true, "append(queryItems:)", "", "", "Argument[self,queryItems:]", "Argument[self]", "taint", "manual"] - - ["", "URL", true, "appendPathComponent(_:)", "", "", "Argument[self,0]", "Argument[self]", "taint", "manual"] - - ["", "URL", true, "appendPathComponent(_:conformingTo:)", "", "", "Argument[self,0]", "Argument[self]", "taint", "manual"] - - ["", "URL", true, "appendPathComponent(_:isDirectory:)", "", "", "Argument[self,0]", "Argument[self]", "taint", "manual"] - - ["", "URL", true, "appendPathExtension(_:)", "", "", "Argument[self,0]", "Argument[self]", "taint", "manual"] - - ["", "URL", true, "appending(component:directoryHint:)", "", "", "Argument[self,component:]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "appending(components:directoryHint:)", "", "", "Argument[self,components:]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "appending(directoryHint:path:)", "", "", "Argument[self,path:]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "appending(queryItems:)", "", "", "Argument[self,queryItems:]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "bookmarkData(includingResourceValuesForKeys:options:relativeTo:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "bookmarkData(includingResourceValuesForKeys:options:relativeTo:)", "", "", "Argument[includingResourceValuesForKeys:].OptionalSome.CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "bookmarkData(includingResourceValuesForKeys:options:relativeTo:)", "", "", "Argument[relativeTo:].OptionalSome", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "bookmarkData(withContentsOf:)", "", "", "Argument[withContentsOf:]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "deletingLastPathComponent()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "deletingPathExtension()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "fragment(percentEncoded:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "homeDirectory(forUser:)", "", "", "Argument[forUser:]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "host(percentEncoded:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "init(_:isDirectory:)", "", "", "Argument[0]", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "URL", true, "init(dataRepresentation:isAbsolute:relativeTo:)", "", "", "Argument[dataRepresentation:]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "init(dataRepresentation:isAbsolute:relativeTo:)", "", "", "Argument[relativeTo:].OptionalSome", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "init(filePath:)", "", "", "Argument[filePath:]", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "URL", true, "init(directoryHint:filePath:)", "", "", "Argument[filePath:]", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "URL", true, "init(directoryHint:filePath:relativeTo:)", "", "", "Argument[filePath:]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "init(directoryHint:filePath:relativeTo:)", "", "", "Argument[relativeTo:].OptionalSome", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "init(filePath:isDirectory:)", "", "", "Argument[filePath:]", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "URL", true, "init(fileURLWithFileSystemRepresentation:isDirectory:relativeTo:)", "", "", "Argument[fileURLWithFileSystemRepresentation:]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "init(fileURLWithFileSystemRepresentation:isDirectory:relativeTo:)", "", "", "Argument[relativeTo:].OptionalSome", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "init(fileURLWithPath:)", "", "", "Argument[fileURLWithPath:]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "init(fileURLWithPath:isDirectory:)", "", "", "Argument[fileURLWithPath:]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "init(fileURLWithPath:isDirectory:relativeTo:)", "", "", "Argument[fileURLWithPath:]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "init(fileURLWithPath:isDirectory:relativeTo:)", "", "", "Argument[relativeTo:].OptionalSome", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "init(fileURLWithPath:relativeTo:)", "", "", "Argument[fileURLWithPath:]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "init(fileURLWithPath:relativeTo:)", "", "", "Argument[relativeTo:].OptionalSome", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "init(appropriateFor:create:for:in:)", "", "", "Argument[for:,in:]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "init(appropriateFor:create:for:in:)", "", "", "Argument[appropriateFor:].OptionalSome", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "init(options:resolvingAliasFileAt:)", "", "", "Argument[resolvingAliasFileAt:]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "init(bookmarkDataIsStale:options:relativeTo:resolvingBookmarkData:)", "", "", "Argument[resolvingBookmarkData:]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "init(bookmarkDataIsStale:options:relativeTo:resolvingBookmarkData:)", "", "", "Argument[relativeTo:].OptionalSome", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "init(resource:)", "", "", "Argument[resource:]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "init(encodingInvalidCharacters:string:)", "", "", "Argument[string:]", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "URL", true, "init(relativeTo:string:)", "(String,URL?)", "", "Argument[string:]", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "URL", true, "init(relativeTo:string:)", "(String,URL?)", "", "Argument[relativeTo:].OptionalSome", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "URL", true, "password(percentEncoded:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "path(percentEncoded:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "promisedItemResourceValues(forKeys:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "query(percentEncoded:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "resolvingSymlinksInPath()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "resourceValues(forKeys:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "resourceValues(forKeys:fromBookmarkData:)", "", "", "Argument[fromBookmarkData:]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "setResourceValues(_:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] - - ["", "URL", true, "setTemporaryResourceValue(_:forKey:)", "", "", "Argument[self,0]", "Argument[self]", "taint", "manual"] - - ["", "URL", true, "user(percentEncoded:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "URL", true, "withUnsafeFileSystemRepresentation(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].OptionalSome.CollectionElement", "taint", "manual"] - - ["", "URL", true, "withUnsafeFileSystemRepresentation(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "taint", "manual"] - - ["", "NSData", true, "init(contentsOf:)", "", "", "Argument[contentsOf:]", "ReturnValue", "taint", "manual"] - - ["", "NSData", true, "init(contentsOfFile:)", "", "", "Argument[contentsOfFile:]", "ReturnValue", "taint", "manual"] - - ["", "NSData", true, "init(contentsOf:options:)", "", "", "Argument[contentsOf:]", "ReturnValue", "taint", "manual"] - - ["", "NSData", true, "init(data:)", "", "", "Argument[data:]", "ReturnValue", "taint", "manual"] - - ["", "NSData", true, "init(bytes:length:)", "", "", "Argument[bytes:]", "ReturnValue", "taint", "manual"] - - ["", "NSData", true, "base64EncodedData(options:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSData", true, "base64EncodedString(options:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSData", true, "base64Encoding()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSData", true, "compressed(using:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSData", true, "dataWithContentsOfMappedFile(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "NSData", true, "decompressed(using:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSData", true, "enumerateBytes(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0]", "taint", "manual"] - - ["", "NSData", true, "getBytes(_:)", "", "", "Argument[self]", "Argument[0]", "taint", "manual"] - - ["", "NSData", true, "getBytes(_:length:)", "", "", "Argument[self]", "Argument[0]", "taint", "manual"] - - ["", "NSData", true, "getBytes(_:range:)", "", "", "Argument[self]", "Argument[0]", "taint", "manual"] - - ["", "NSData", true, "init(base64Encoded:options:)", "", "", "Argument[base64Encoded:]", "ReturnValue", "taint", "manual"] - - ["", "NSData", true, "init(base64Encoding:)", "", "", "Argument[base64Encoding:]", "ReturnValue", "taint", "manual"] - - ["", "NSData", true, "init(bytesNoCopy:length:)", "", "", "Argument[bytesNoCopy:]", "ReturnValue", "taint", "manual"] - - ["", "NSData", true, "init(bytesNoCopy:deallocator:length:)", "", "", "Argument[bytesNoCopy:]", "ReturnValue", "taint", "manual"] - - ["", "NSData", true, "init(bytesNoCopy:freeWhenDone:length:)", "", "", "Argument[bytesNoCopy:]", "ReturnValue", "taint", "manual"] - - ["", "NSData", true, "init(contentsOfFile:options:)", "", "", "Argument[contentsOfFile:]", "ReturnValue", "taint", "manual"] - - ["", "NSData", true, "init(contentsOfMappedFile:)", "", "", "Argument[contentsOfMappedFile:]", "ReturnValue", "taint", "manual"] - - ["", "NSData", true, "subdata(with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "init(coder:)", "", "", "Argument[coder:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "init(cString:)", "", "", "Argument[cString:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "getBytes(_:encoding:maxLength:options:range:remaining:usedLength:)", "", "", "Argument[self]", "Argument[0]", "taint", "manual"] - - ["", "NSString", true, "getCharacters(_:range:)", "", "", "Argument[self]", "Argument[0]", "taint", "manual"] - - ["", "NSString", true, "character(at:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "getCString(_:encoding:maxLength:)", "", "", "Argument[self]", "Argument[0]", "taint", "manual"] - - ["", "NSString", true, "init(string:)", "", "", "Argument[string:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "appending(_:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "init(contentsOf:)", "", "", "Argument[contentsOf:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "init(contentsOfFile:)", "", "", "Argument[contentsOfFile:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "string(withContentsOf:)", "", "", "Argument[withContentsOf:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "init(contentsOf:encoding:)", "", "", "Argument[contentsOf:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "string(withContentsOfFile:)", "", "", "Argument[withContentsOfFile:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "init(contentsOfFile:encoding:)", "", "", "Argument[contentsOfFile:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "init(contentsOf:usedEncoding:)", "", "", "Argument[contentsOf:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "init(contentsOfFile:usedEncoding:)", "", "", "Argument[contentsOfFile:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "appendingPathComponent(_:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "appendingPathExtension(_:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "appendingPathComponent(_:conformingTo:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "addingPercentEncoding(withAllowedCharacters:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "addingPercentEscapes(using:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "appendingFormat(_:_:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "appendingFormat(_:_:)", "", "", "Argument[1].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "applyTransform(_:range:reverse:updatedRange:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "applyingTransform(_:reverse:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "cString()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "cString(using:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "capitalized(with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "completePath(caseSensitive:filterTypes:into:matchesInto:)", "", "", "Argument[self]", "Argument[into:].CollectionElement", "taint", "manual"] - - ["", "NSString", true, "completePath(caseSensitive:filterTypes:into:matchesInto:)", "", "", "Argument[self]", "Argument[matchesInto:].CollectionElement.CollectionElement", "taint", "manual"] - - ["", "NSString", true, "components(separatedBy:)", "", "", "Argument[self]", "ReturnValue.CollectionElement", "taint", "manual"] - - ["", "NSString", true, "data(using:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "data(allowLossyConversion:using:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "enumerateLines(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0]", "taint", "manual"] - - ["", "NSString", true, "enumerateLinguisticTags(in:options:orthography:scheme:using:)", "", "", "Argument[self]", "Argument[using:].Parameter[0].OptionalSome", "taint", "manual"] - - ["", "NSString", true, "enumerateSubstrings(in:options:using:)", "", "", "Argument[self]", "Argument[using:].Parameter[0].OptionalSome", "taint", "manual"] - - ["", "NSString", true, "enumerateSubstrings(in:options:using:)", "", "", "Argument[using:].Parameter[0].OptionalSome", "Argument[self]", "taint", "manual"] - - ["", "NSString", true, "folding(locale:options:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "getCString(_:)", "", "", "Argument[self]", "Argument[0]", "taint", "manual"] - - ["", "NSString", true, "getCString(_:maxLength:)", "", "", "Argument[self]", "Argument[0]", "taint", "manual"] - - ["", "NSString", true, "getCString(_:maxLength:range:remaining:)", "", "", "Argument[self]", "Argument[0]", "taint", "manual"] - - ["", "NSString", true, "getCharacters(_:)", "", "", "Argument[self]", "Argument[0]", "taint", "manual"] - - ["", "NSString", true, "getFileSystemRepresentation(_:maxLength:)", "", "", "Argument[self]", "Argument[0]", "taint", "manual"] - - ["", "NSString", true, "init(bytes:encoding:length:)", "", "", "Argument[bytes:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "init(bytesNoCopy:deallocator:encoding:length:)", "", "", "Argument[bytesNoCopy:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "init(bytesNoCopy:encoding:freeWhenDone:length:)", "", "", "Argument[bytesNoCopy:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "init(cString:encoding:)", "", "", "Argument[cString:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "init(cString:length:)", "", "", "Argument[cString:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "init(cStringNoCopy:freeWhenDone:length:)", "", "", "Argument[cStringNoCopy:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "init(characters:length:)", "", "", "Argument[characters:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "init(charactersNoCopy:dellocator:length:)", "", "", "Argument[charactersNoCopy:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "init(charactersNoCopy:freeWhenDone:length:)", "", "", "Argument[charactersNoCopy:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "init(data:encoding:)", "", "", "Argument[data:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "init(_:format:)", "", "", "Argument[format:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "init(_:format:)", "", "", "Argument[1].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "init(arguments:format:)", "", "", "Argument[format:,arguments:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "init(_:format:locale:)", "", "", "Argument[format:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "init(_:format:locale:)", "", "", "Argument[2].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "init(arguments:format:locale:)", "", "", "Argument[format:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "init(arguments:format:locale:)", "", "", "Argument[arguments:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "init(utf8String:)", "", "", "Argument[utf8String:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "localizedStringWithFormat(_:_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "localizedStringWithFormat(_:_:)", "", "", "Argument[1].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "lossyCString()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "lowercased(with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "padding(startingAt:toLength:withPad:)", "", "", "Argument[withPad:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "padding(startingAt:toLength:withPad:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "path(withComponents:)", "", "", "Argument[withComponents:].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "propertyList()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "propertyListFromStringsFileFormat()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "replacingCharacters(in:with:)", "", "", "Argument[with:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "replacingCharacters(in:with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "replacingOccurrences(of:with:)", "", "", "Argument[with:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "replacingOccurrences(of:with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "replacingOccurrences(of:options:range:with:)", "", "", "Argument[with:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "replacingOccurrences(of:options:range:with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "replacingPercentEscapes(using:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "string(withCString:)", "", "", "Argument[withCString:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "string(length:withCString:)", "", "", "Argument[withCString:]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "stringEncoding(convertedString:encodingOptions:for:usedLossyCompression:)", "", "", "Argument[for:]", "Argument[convertedString:]", "taint", "manual"] - - ["", "NSString", true, "strings(byAppendingPaths:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "strings(byAppendingPaths:)", "", "", "Argument[byAppendingPaths:].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "substring(from:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "substring(to:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "substring(with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "trimmingCharacters(in:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "uppercased(with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSString", true, "variantFittingPresentationWidth(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Data", true, "init(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "Data", true, "append(_:count:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] - - ["", "Data", true, "insert(at:contentsOf:)", "", "", "Argument[contentsOf:]", "Argument[self]", "taint", "manual"] - - ["", "Data", true, "replaceSubrange(_:with:)", "", "", "Argument[with:]", "Argument[self]", "taint", "manual"] - - ["", "Data", true, "withUnsafeMutableBytes(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "Data", true, "withUnsafeMutableBytes(_:)", "", "", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "Data", true, "withUnsafeMutableBytes(_:)", "", "", "Argument[0].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "taint", "manual"] - - ["", "Data", true, "withUnsafeMutableBytes(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "Data", true, "map(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Data", true, "shuffled()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Data", true, "shuffled(using:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Data", true, "compactMap(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Data", true, "flatMap(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Data", true, "reduce(_:into:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Data", true, "sorted()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Data", true, "sorted(by:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Data", true, "replace(_:maxReplacements:with:)", "", "", "Argument[with:]", "Argument[self]", "taint", "manual"] - - ["", "Data", true, "replacing(_:maxReplacements:with:)", "", "", "Argument[with:]", "Argument[self]", "taint", "manual"] - - ["", "Data", true, "replacing(_:maxReplacements:subrange:with:)", "", "", "Argument[with:]", "Argument[self]", "taint", "manual"] - - ["", "Data", true, "trimmingPrefix(while:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Data", true, "trimmingPrefix(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Data", true, "init(contentsOf:options:)", "", "", "Argument[contentsOf:]", "ReturnValue", "taint", "manual"] - - ["", "Data", true, "base64EncodedData(options:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Data", true, "base64EncodedString(options:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Data", true, "init(base64Encoded:options:)", "", "", "Argument[base64Encoded:]", "ReturnValue", "taint", "manual"] - - ["", "Data", true, "init(buffer:)", "", "", "Argument[buffer:]", "ReturnValue", "taint", "manual"] - - ["", "Data", true, "init(bytes:count:)", "", "", "Argument[bytes:]", "ReturnValue", "taint", "manual"] - - ["", "Data", true, "init(bytesNoCopy:count:deallocator:)", "", "", "Argument[bytesNoCopy:]", "ReturnValue", "taint", "manual"] - - ["", "Data", true, "init(referencing:)", "", "", "Argument[referencing:]", "ReturnValue", "taint", "manual"] - - ["", "Data", true, "replaceSubrange(_:count:with:)", "", "", "Argument[with:]", "Argument[self]", "taint", "manual"] - - ["", "Data", true, "sorted(using:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSObject", true, "copy()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSObject", true, "mutableCopy()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "Blob", true, "init(bytes:)", "", "", "Argument[bytes:]", "ReturnValue", "taint", "manual"] - - ["", "Blob", true, "init(bytes:length:)", "", "", "Argument[bytes:]", "ReturnValue", "taint", "manual"] - - ["", "Expression", true, "init(_:_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "Expression", true, "init(_:_:)", "", "", "Argument[1].CollectionElement", "ReturnValue", "taint", "manual"] - - ["", "NSCopying", true, "copy(with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "ExpressionType", true, "init(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "ExpressionType", true, "replace(_:with:)", "", "", "Argument[with:]", "ReturnValue", "taint", "manual"] - - ["", "InputStream", true, "init(data:)", "", "", "Argument[data:]", "ReturnValue", "taint", "manual"] - - ["", "NSMutableData", true, "append(_:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] - - ["", "NSMutableData", true, "setData(_:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] - - ["", "NSMutableData", true, "append(_:length:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] - - ["", "NSMutableData", true, "replaceBytes(in:withBytes:)", "", "", "Argument[withBytes:]", "Argument[self]", "taint", "manual"] - - ["", "NSMutableData", true, "replaceBytes(in:length:withBytes:)", "", "", "Argument[withBytes:]", "Argument[self]", "taint", "manual"] - - ["", "NSURL", true, "init(string:)", "(String)", "", "Argument[string:]", "ReturnValue.OptionalSome", "taint", "manual"] - - ["", "NSURL", true, "appendingPathExtension(for:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "NSURL", true, "appendingPathComponent(_:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] - - ["", "NSURL", true, "appendingPathExtension(_:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] - - ["", "NSURL", true, "appendingPathComponent(_:isDirectory:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] - - ["", "NSURL", true, "appendingPathComponent(_:conformingTo:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] - - ["", "NSMutableCopying", true, "mutableCopy(with:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "URLSession", true, "dataTask(completionHandler:with:)", "", "", "Argument[with:]", "Argument[completionHandler:].Parameter[0]", "taint", "manual"] - - ["", "WKUserScript", true, "init(forMainFrameOnly:injectionTime:source:)", "", "", "Argument[source:]", "ReturnValue", "taint", "manual"] - - ["", "WKUserScript", true, "init(forMainFrameOnly:in:injectionTime:source:)", "", "", "Argument[source:]", "ReturnValue", "taint", "manual"] - - ["", "JSValue", true, "atIndex(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "JSValue", true, "defineProperty(_:descriptor:)", "", "", "Argument[descriptor:]", "Argument[self]", "taint", "manual"] - - ["", "JSValue", true, "forProperty(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "JSValue", true, "init(bool:in:)", "", "", "Argument[bool:]", "ReturnValue", "taint", "manual"] - - ["", "JSValue", true, "init(double:in:)", "", "", "Argument[double:]", "ReturnValue", "taint", "manual"] - - ["", "JSValue", true, "init(in:int32:)", "", "", "Argument[int32:]", "ReturnValue", "taint", "manual"] - - ["", "JSValue", true, "init(in:object:)", "", "", "Argument[object:]", "ReturnValue", "taint", "manual"] - - ["", "JSValue", true, "init(in:point:)", "", "", "Argument[point:]", "ReturnValue", "taint", "manual"] - - ["", "JSValue", true, "init(in:range:)", "", "", "Argument[range:]", "ReturnValue", "taint", "manual"] - - ["", "JSValue", true, "init(in:rect:)", "", "", "Argument[rect:]", "ReturnValue", "taint", "manual"] - - ["", "JSValue", true, "init(in:size:)", "", "", "Argument[size:]", "ReturnValue", "taint", "manual"] - - ["", "JSValue", true, "init(in:uInt32:)", "", "", "Argument[uInt32:]", "ReturnValue", "taint", "manual"] - - ["", "JSValue", true, "setValue(_:at:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] - - ["", "JSValue", true, "setValue(_:forProperty:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] - - ["", "JSValue", true, "toArray()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "JSValue", true, "toBool()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "JSValue", true, "toDate()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "JSValue", true, "toDictionary()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "JSValue", true, "toDouble()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "JSValue", true, "toInt32()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "JSValue", true, "toNumber()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "JSValue", true, "toObject()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "JSValue", true, "toObjectOf(_:)", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "JSValue", true, "toPoint()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "JSValue", true, "toRange()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "JSValue", true, "toRect()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "JSValue", true, "toSize()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "JSValue", true, "toString()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "JSValue", true, "toUInt32()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "FilePath.Component", true, "init(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "FilePath.Component", true, "init(platformString:)", "", "", "Argument[platformString:]", "ReturnValue", "taint", "manual"] - - ["", "FilePath.Component", true, "withPlatformString(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0]", "taint", "manual"] - - ["", "FilePath.Root", true, "init(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "FilePath.Root", true, "init(platformString:)", "", "", "Argument[platformString:]", "ReturnValue", "taint", "manual"] - - ["", "FilePath.Root", true, "withPlatformString(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0]", "taint", "manual"] - - ["", "FilePath", true, "init(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "FilePath", true, "append(_:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] - - ["", "FilePath", true, "init(extendedGraphemeClusterLiteral:)", "", "", "Argument[extendedGraphemeClusterLiteral:]", "ReturnValue", "taint", "manual"] - - ["", "FilePath", true, "init(unicodeScalarLiteral:)", "", "", "Argument[unicodeScalarLiteral:]", "ReturnValue", "taint", "manual"] - - ["", "FilePath", true, "encode(to:)", "", "", "Argument[self]", "Argument[to:]", "taint", "manual"] - - ["", "FilePath", true, "init(from:)", "", "", "Argument[from:]", "ReturnValue", "taint", "manual"] - - ["", "FilePath", true, "init(stringLiteral:)", "(String)", "", "Argument[stringLiteral:]", "ReturnValue", "taint", "manual"] - - ["", "FilePath", true, "withCString(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "FilePath", true, "withCString(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "taint", "manual"] - - ["", "FilePath", true, "init(cString:)", "", "", "Argument[cString:]", "ReturnValue", "taint", "manual"] - - ["", "FilePath", true, "push(_:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] - - ["", "FilePath", true, "appending(_:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] - - ["", "FilePath", true, "init(platformString:)", "", "", "Argument[platformString:]", "ReturnValue", "taint", "manual"] - - ["", "FilePath", true, "withPlatformString(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "FilePath", true, "withPlatformString(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "taint", "manual"] - - ["", "FilePath", true, "init(_:root:)", "", "", "Argument[root:,0]", "ReturnValue", "taint", "manual"] - - ["", "FilePath", true, "init(components:root:)", "", "", "Argument[root:,components:]", "ReturnValue", "taint", "manual"] - - ["", "FilePath", true, "lexicallyNormalized()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "FilePath", true, "lexicallyResolving(_:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] - - ["", "FilePath", true, "pushing(_:)", "", "", "Argument[self,0]", "ReturnValue", "taint", "manual"] - - ["", "FilePath", true, "removingLastComponent()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "FilePath", true, "removingRoot()", "", "", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["", "DataProtocol", true, "copyBytes(to:)", "", "", "Argument[self]", "Argument[to:]", "taint", "manual"] - - ["", "DataProtocol", true, "copyBytes(count:to:)", "", "", "Argument[self]", "Argument[to:]", "taint", "manual"] - - ["", "DataProtocol", true, "copyBytes(from:to:)", "", "", "Argument[self]", "Argument[to:]", "taint", "manual"] - - ["", "ContiguousBytes", true, "withUnsafeBytes(_:)", "", "", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "ContiguousBytes", true, "withUnsafeBytes(_:)", "", "", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "taint", "manual"] - - ["", "ContiguousBytes", true, "withUnsafeBytes(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "URLResource", true, "init(bundle:locale:name:subdirectory:)", "", "", "Argument[name:,subdirectory:]", "ReturnValue", "taint", "manual"] - - ["", "NSMutableString", true, "append(_:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] - - ["", "NSMutableString", true, "insert(_:at:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] - - ["", "NSMutableString", true, "appendFormat(_:_:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] - - ["", "NSMutableString", true, "appendFormat(_:_:)", "", "", "Argument[1].CollectionElement", "Argument[self]", "taint", "manual"] - - ["", "NSMutableString", true, "replaceCharacters(in:with:)", "", "", "Argument[with:]", "Argument[self]", "taint", "manual"] - - ["", "NSMutableString", true, "replaceOccurrences(of:options:range:with:)", "", "", "Argument[with:]", "Argument[self]", "taint", "manual"] - - ["", "NSMutableString", true, "setString(_:)", "", "", "Argument[0]", "Argument[self]", "taint", "manual"] diff --git a/unified/ql/lib/ext/swift-alamofire.model.yml b/unified/ql/lib/ext/swift-alamofire.model.yml new file mode 100644 index 000000000000..382b970725bd --- /dev/null +++ b/unified/ql/lib/ext/swift-alamofire.model.yml @@ -0,0 +1,11 @@ +extensions: + - addsTo: + pack: codeql/unified-all + extensible: sourceModel + data: + - ["Alamofire.DataResponse", "Member[value]", "remote"] + - ["Alamofire.DataResponse", "Member[result]", "remote"] + - ["Alamofire.DataResponse", "Member[data]", "remote"] + - ["Alamofire.DownloadResponse", "Member[value]", "remote"] + - ["Alamofire.DownloadResponse", "Member[result]", "remote"] + - ["Alamofire.DownloadResponse", "Member[data]", "remote"] diff --git a/unified/ql/lib/ext/swift-applearchive.model.yml b/unified/ql/lib/ext/swift-applearchive.model.yml new file mode 100644 index 000000000000..756e9cab2ed2 --- /dev/null +++ b/unified/ql/lib/ext/swift-applearchive.model.yml @@ -0,0 +1,9 @@ +extensions: + - addsTo: + pack: codeql/unified-all + extensible: sinkModel + data: + - ["AppleArchive.ArchiveByteStream.Type", "Member[fileStream].WithNamedArgument[automaticClose].Argument[fd:]", "path-injection"] + - ["AppleArchive.ArchiveByteStream.Type", "Member[fileStream].WithNamedArgument[mode].Argument[path:]", "path-injection"] + - ["AppleArchive.ArchiveByteStream.Type", "Member[withFileStream].WithNamedArgument[automaticClose].Argument[fd:]", "path-injection"] + - ["AppleArchive.ArchiveByteStream.Type", "Member[withFileStream].WithNamedArgument[mode].Argument[path:]", "path-injection"] diff --git a/unified/ql/lib/ext/swift-cryptokit.model.yml b/unified/ql/lib/ext/swift-cryptokit.model.yml new file mode 100644 index 000000000000..a53ee592b377 --- /dev/null +++ b/unified/ql/lib/ext/swift-cryptokit.model.yml @@ -0,0 +1,35 @@ +extensions: + - addsTo: + pack: codeql/unified-all + extensible: sinkModel + data: + - ["CryptoKit.Insecure.MD5", "Member[hash].WithNamedArgument[bufferPointer].Argument[bufferPointer:]", "weak-hash-input-MD5"] + - ["CryptoKit.Insecure.MD5.Type", "Member[hash].WithNamedArgument[bufferPointer].Argument[bufferPointer:]", "weak-hash-input-MD5"] + - ["CryptoKit.Insecure.MD5", "Member[hash].WithNamedArgument[data].Argument[data:]", "weak-hash-input-MD5"] + - ["CryptoKit.Insecure.MD5.Type", "Member[hash].WithNamedArgument[data].Argument[data:]", "weak-hash-input-MD5"] + - ["CryptoKit.Insecure.MD5", "Member[update].WithNamedArgument[bufferPointer].Argument[bufferPointer:]", "weak-hash-input-MD5"] + - ["CryptoKit.Insecure.MD5", "Member[update].WithNamedArgument[data].Argument[data:]", "weak-hash-input-MD5"] + - ["CryptoKit.Insecure.SHA1", "Member[hash].WithNamedArgument[bufferPointer].Argument[bufferPointer:]", "weak-hash-input-SHA1"] + - ["CryptoKit.Insecure.SHA1.Type", "Member[hash].WithNamedArgument[bufferPointer].Argument[bufferPointer:]", "weak-hash-input-SHA1"] + - ["CryptoKit.Insecure.SHA1", "Member[hash].WithNamedArgument[data].Argument[data:]", "weak-hash-input-SHA1"] + - ["CryptoKit.Insecure.SHA1.Type", "Member[hash].WithNamedArgument[data].Argument[data:]", "weak-hash-input-SHA1"] + - ["CryptoKit.Insecure.SHA1", "Member[update].WithNamedArgument[bufferPointer].Argument[bufferPointer:]", "weak-hash-input-SHA1"] + - ["CryptoKit.Insecure.SHA1", "Member[update].WithNamedArgument[data].Argument[data:]", "weak-hash-input-SHA1"] + - ["CryptoKit.SHA256", "Member[hash].WithNamedArgument[bufferPointer].Argument[bufferPointer:]", "weak-password-hash-input-SHA256"] + - ["CryptoKit.SHA256.Type", "Member[hash].WithNamedArgument[bufferPointer].Argument[bufferPointer:]", "weak-password-hash-input-SHA256"] + - ["CryptoKit.SHA256", "Member[hash].WithNamedArgument[data].Argument[data:]", "weak-password-hash-input-SHA256"] + - ["CryptoKit.SHA256.Type", "Member[hash].WithNamedArgument[data].Argument[data:]", "weak-password-hash-input-SHA256"] + - ["CryptoKit.SHA256", "Member[update].WithNamedArgument[bufferPointer].Argument[bufferPointer:]", "weak-password-hash-input-SHA256"] + - ["CryptoKit.SHA256", "Member[update].WithNamedArgument[data].Argument[data:]", "weak-password-hash-input-SHA256"] + - ["CryptoKit.SHA384", "Member[hash].WithNamedArgument[bufferPointer].Argument[bufferPointer:]", "weak-password-hash-input-SHA384"] + - ["CryptoKit.SHA384.Type", "Member[hash].WithNamedArgument[bufferPointer].Argument[bufferPointer:]", "weak-password-hash-input-SHA384"] + - ["CryptoKit.SHA384", "Member[hash].WithNamedArgument[data].Argument[data:]", "weak-password-hash-input-SHA384"] + - ["CryptoKit.SHA384.Type", "Member[hash].WithNamedArgument[data].Argument[data:]", "weak-password-hash-input-SHA384"] + - ["CryptoKit.SHA384", "Member[update].WithNamedArgument[bufferPointer].Argument[bufferPointer:]", "weak-password-hash-input-SHA384"] + - ["CryptoKit.SHA384", "Member[update].WithNamedArgument[data].Argument[data:]", "weak-password-hash-input-SHA384"] + - ["CryptoKit.SHA512", "Member[hash].WithNamedArgument[bufferPointer].Argument[bufferPointer:]", "weak-password-hash-input-SHA512"] + - ["CryptoKit.SHA512.Type", "Member[hash].WithNamedArgument[bufferPointer].Argument[bufferPointer:]", "weak-password-hash-input-SHA512"] + - ["CryptoKit.SHA512", "Member[hash].WithNamedArgument[data].Argument[data:]", "weak-password-hash-input-SHA512"] + - ["CryptoKit.SHA512.Type", "Member[hash].WithNamedArgument[data].Argument[data:]", "weak-password-hash-input-SHA512"] + - ["CryptoKit.SHA512", "Member[update].WithNamedArgument[bufferPointer].Argument[bufferPointer:]", "weak-password-hash-input-SHA512"] + - ["CryptoKit.SHA512", "Member[update].WithNamedArgument[data].Argument[data:]", "weak-password-hash-input-SHA512"] diff --git a/unified/ql/lib/ext/swift-cryptoswift.model.yml b/unified/ql/lib/ext/swift-cryptoswift.model.yml new file mode 100644 index 000000000000..35b1c35f3a86 --- /dev/null +++ b/unified/ql/lib/ext/swift-cryptoswift.model.yml @@ -0,0 +1,33 @@ +extensions: + - addsTo: + pack: codeql/unified-all + extensible: sinkModel + data: + - ["CryptoSwift.AES.Type", "Member[init].WithoutNamedArgument[padding].Argument[blockMode:]", "encryption-block-mode"] + - ["CryptoSwift.AES.Type", "Member[init].WithNamedArgument[padding].Argument[blockMode:]", "encryption-block-mode"] + - ["CryptoSwift.Blowfish.Type", "Member[init].Argument[blockMode:]", "encryption-block-mode"] + - ["CryptoSwift.Digest.Type", "Member[md5].Argument[0]", "weak-hash-input-MD5"] + - ["CryptoSwift.Digest.Type", "Member[sha1].Argument[0]", "weak-hash-input-SHA1"] + - ["CryptoSwift.Digest.Type", "Member[sha2].Argument[0]", "weak-password-hash-input-SHA2"] + - ["CryptoSwift.Digest", "Member[sha224].Argument[0]", "weak-password-hash-input-SHA224"] + - ["CryptoSwift.Digest", "Member[sha256].Argument[0]", "weak-password-hash-input-SHA256"] + - ["CryptoSwift.Digest.Type", "Member[sha3].Argument[0]", "weak-password-hash-input-SHA3"] + - ["CryptoSwift.Digest", "Member[sha384].Argument[0]", "weak-password-hash-input-SHA384"] + - ["CryptoSwift.Digest.Type", "Member[sha512].Argument[0]", "weak-password-hash-input-SHA512"] + - ["CryptoSwift.MD5", "Member[callAsFunction].Argument[0]", "weak-hash-input-MD5"] + - ["CryptoSwift.MD5", "Member[calculate].Argument[for:]", "weak-hash-input-MD5"] + - ["CryptoSwift.MD5", "Member[process].Argument[block:]", "weak-hash-input-MD5"] + - ["CryptoSwift.MD5", "Member[update].Argument[withBytes:]", "weak-hash-input-MD5"] + - ["CryptoSwift.SHA1", "Member[callAsFunction].Argument[0]", "weak-hash-input-SHA1"] + - ["CryptoSwift.SHA1", "Member[calculate].Argument[for:]", "weak-hash-input-SHA1"] + - ["CryptoSwift.SHA1", "Member[process].Argument[block:]", "weak-hash-input-SHA1"] + - ["CryptoSwift.SHA1", "Member[update].Argument[withBytes:]", "weak-hash-input-SHA1"] + - ["CryptoSwift.SHA2", "Member[callAsFunction].Argument[0]", "weak-password-hash-input-SHA2"] + - ["CryptoSwift.SHA2", "Member[calculate].Argument[for:]", "weak-password-hash-input-SHA2"] + - ["CryptoSwift.SHA2", "Member[update].Argument[withBytes:]", "weak-password-hash-input-SHA2"] + - ["CryptoSwift.SHA2", "Member[process32].Argument[block:]", "weak-password-hash-input-SHA2"] + - ["CryptoSwift.SHA2", "Member[process64].Argument[block:]", "weak-password-hash-input-SHA2"] + - ["CryptoSwift.SHA3", "Member[callAsFunction].Argument[0]", "weak-password-hash-input-SHA2"] + - ["CryptoSwift.SHA3", "Member[calculate].Argument[for:]", "weak-password-hash-input-SHA2"] + - ["CryptoSwift.SHA3", "Member[process].Argument[block:]", "weak-password-hash-input-SHA2"] + - ["CryptoSwift.SHA3", "Member[update].Argument[withBytes:]", "weak-password-hash-input-SHA2"] diff --git a/unified/ql/lib/ext/swift-darwin.model.yml b/unified/ql/lib/ext/swift-darwin.model.yml new file mode 100644 index 000000000000..1e6c29ccc3fe --- /dev/null +++ b/unified/ql/lib/ext/swift-darwin.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/unified-all + extensible: sinkModel + data: + - ["Darwin", "Member[vfprintf].Argument[1,2]", "log-injection"] diff --git a/unified/ql/lib/ext/swift-foundation.model.yml b/unified/ql/lib/ext/swift-foundation.model.yml new file mode 100644 index 000000000000..38c8bc4446a2 --- /dev/null +++ b/unified/ql/lib/ext/swift-foundation.model.yml @@ -0,0 +1,380 @@ +extensions: + - addsTo: + pack: codeql/unified-all + extensible: sourceModel + data: + - ["Foundation.URL", "Member[lines]", "remote"] + - ["Foundation.URL", "Member[resourceBytes]", "remote"] + - ["Foundation.URL.AsyncBytes", "Member[lines]", "remote"] + - ["Foundation.NSData.Type", "Member[init].WithNamedArgument[contentsOf].WithoutNamedArgument[options].ReturnValue", "remote"] + - ["Foundation.NSData.Type", "Member[init].WithNamedArgument[contentsOf].WithNamedArgument[options].ReturnValue", "remote"] + - ["Foundation.NSString", "Member[length]", "nsstring-length"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[contentsOf].WithoutNamedArgument[encoding].WithoutNamedArgument[usedEncoding].ReturnValue", "remote"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[contentsOfFile].WithoutNamedArgument[encoding].WithoutNamedArgument[usedEncoding].ReturnValue", "local"] + - ["Foundation.NSString.Type", "Member[string].WithNamedArgument[withContentsOf].ReturnValue", "remote"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[contentsOf].WithNamedArgument[encoding].ReturnValue", "remote"] + - ["Foundation.NSString.Type", "Member[string].WithNamedArgument[withContentsOfFile].ReturnValue", "local"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[contentsOfFile].WithNamedArgument[encoding].ReturnValue", "local"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[contentsOf].WithNamedArgument[usedEncoding].ReturnValue", "remote"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[contentsOfFile].WithNamedArgument[usedEncoding].ReturnValue", "local"] + - ["Foundation.FileManager", "Member[contents].ReturnValue", "local"] + - ["Foundation.Data.Type", "Member[init].WithNamedArgument[contentsOf].WithNamedArgument[options].ReturnValue", "remote"] + - ["Foundation.Data.Type", "Member[init].WithNamedArgument[contentsOf].WithoutNamedArgument[options].ReturnValue", "remote"] + - ["Foundation.NSMutableString", "Member[length]", "nsstring-length"] + - addsTo: + pack: codeql/unified-all + extensible: sinkModel + data: + - ["Foundation", "Member[NSMakeRange].Argument[0,1]", "nsstring-length"] + - ["Foundation", "Member[NSLog].Argument[0,1]", "log-injection"] + - ["Foundation", "Member[NSLogv].Argument[0,1]", "log-injection"] + - ["Foundation.NSData.Type", "Member[init].WithNamedArgument[contentsOf].WithoutNamedArgument[options].Argument[contentsOf:]", "path-injection"] + - ["Foundation.NSData.Type", "Member[init].WithNamedArgument[contentsOfFile].WithoutNamedArgument[options].Argument[contentsOfFile:]", "path-injection"] + - ["Foundation.NSData.Type", "Member[init].WithNamedArgument[contentsOf].WithNamedArgument[options].Argument[contentsOf:]", "path-injection"] + - ["Foundation.NSData.Type", "Member[dataWithContentsOfMappedFile].Argument[0]", "path-injection"] + - ["Foundation.NSData.Type", "Member[init].WithNamedArgument[contentsOfFile].WithNamedArgument[options].Argument[contentsOfFile:]", "path-injection"] + - ["Foundation.NSData.Type", "Member[init].WithNamedArgument[contentsOfMappedFile].Argument[contentsOfMappedFile:]", "path-injection"] + - ["Foundation.NSData", "Member[write].WithNamedArgument[options].WithNamedArgument[to].Argument[to:]", "path-injection"] + - ["Foundation.NSData", "Member[write].WithNamedArgument[atomically].WithNamedArgument[to].Argument[to:]", "path-injection"] + - ["Foundation.NSData", "Member[write].WithNamedArgument[atomically].WithNamedArgument[toFile].Argument[toFile:]", "path-injection"] + - ["Foundation.NSData", "Member[write].WithNamedArgument[options].WithNamedArgument[toFile].Argument[toFile:]", "path-injection"] + - ["Foundation.NSString", "Member[character].Argument[at:]", "nsstring-length"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[contentsOfFile].WithNamedArgument[encoding].Argument[contentsOfFile:]", "path-injection"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[contentsOfFile].WithNamedArgument[usedEncoding].Argument[contentsOfFile:]", "path-injection"] + - ["Foundation.NSString", "Member[substring].WithNamedArgument[from].Argument[from:]", "nsstring-length"] + - ["Foundation.NSString", "Member[substring].WithNamedArgument[to].Argument[to:]", "nsstring-length"] + - ["Foundation.NSString", "Member[write].WithNamedArgument[to].Argument[to:]", "path-injection"] + - ["Foundation.NSString", "Member[write].WithNamedArgument[toFile].Argument[toFile:]", "path-injection"] + - ["Foundation.FileManager", "Member[contents].Argument[atPath:]", "path-injection"] + - ["Foundation.FileManager", "Member[unzipItem].Argument[at:]", "unsafe-unpack"] + - ["Foundation.FileManager", "Member[attributesOfItem].Argument[atPath:]", "path-injection"] + - ["Foundation.FileManager", "Member[changeCurrentDirectoryPath].Argument[0]", "path-injection"] + - ["Foundation.FileManager", "Member[changeFileAttributes].Argument[atPath:]", "path-injection"] + - ["Foundation.FileManager", "Member[contentsEqual].Argument[atPath:,andPath:]", "path-injection"] + - ["Foundation.FileManager", "Member[contentsOfDirectory].WithNamedArgument[at].Argument[at:]", "path-injection"] + - ["Foundation.FileManager", "Member[contentsOfDirectory].WithNamedArgument[atPath].Argument[atPath:]", "path-injection"] + - ["Foundation.FileManager", "Member[copyItem].WithNamedArgument[at].Argument[at:,to:]", "path-injection"] + - ["Foundation.FileManager", "Member[copyItem].WithNamedArgument[atPath].Argument[atPath:,toPath:]", "path-injection"] + - ["Foundation.FileManager", "Member[createDirectory].WithNamedArgument[at].Argument[at:]", "path-injection"] + - ["Foundation.FileManager", "Member[createDirectory].WithoutNamedArgument[withIntermediateDirectories].Argument[atPath:]", "path-injection"] + - ["Foundation.FileManager", "Member[createDirectory].WithNamedArgument[atPath].WithNamedArgument[withIntermediateDirectories].Argument[atPath:]", "path-injection"] + - ["Foundation.FileManager", "Member[createFile].Argument[atPath:]", "path-injection"] + - ["Foundation.FileManager", "Member[createSymbolicLink].WithNamedArgument[at].Argument[at:,withDestinationURL:]", "path-injection"] + - ["Foundation.FileManager", "Member[createSymbolicLink].WithNamedArgument[pathContent].Argument[atPath:,pathContent:]", "path-injection"] + - ["Foundation.FileManager", "Member[createSymbolicLink].WithNamedArgument[withDestinationPath].Argument[atPath:,withDestinationPath:]", "path-injection"] + - ["Foundation.FileManager", "Member[destinationOfSymbolicLink].Argument[atPath:]", "path-injection"] + - ["Foundation.FileManager", "Member[directoryContents].Argument[atPath:]", "path-injection"] + - ["Foundation.FileManager", "Member[enumerator].WithNamedArgument[at].Argument[at:]", "path-injection"] + - ["Foundation.FileManager", "Member[enumerator].WithNamedArgument[atPath].Argument[atPath:]", "path-injection"] + - ["Foundation.FileManager", "Member[fileAttributes].Argument[atPath:]", "path-injection"] + - ["Foundation.FileManager", "Member[fileExists].WithoutNamedArgument[isDirectory].Argument[atPath:]", "path-injection"] + - ["Foundation.FileManager", "Member[fileExists].WithNamedArgument[isDirectory].Argument[atPath:]", "path-injection"] + - ["Foundation.FileManager", "Member[linkItem].WithNamedArgument[at].Argument[at:,to:]", "path-injection"] + - ["Foundation.FileManager", "Member[linkItem].WithNamedArgument[atPath].Argument[atPath:,toPath:]", "path-injection"] + - ["Foundation.FileManager", "Member[moveItem].WithNamedArgument[at].Argument[at:,to:]", "path-injection"] + - ["Foundation.FileManager", "Member[moveItem].WithNamedArgument[atPath].Argument[atPath:,toPath:]", "path-injection"] + - ["Foundation.FileManager", "Member[pathContentOfSymbolicLink].Argument[atPath:]", "path-injection"] + - ["Foundation.FileManager", "Member[removeItem].WithNamedArgument[at].Argument[at:]", "path-injection"] + - ["Foundation.FileManager", "Member[removeItem].WithNamedArgument[atPath].Argument[atPath:]", "path-injection"] + - ["Foundation.FileManager", "Member[replaceItem].Argument[at:,withItemAt:]", "path-injection"] + - ["Foundation.FileManager", "Member[replaceItemAt].Argument[0,withItemAt:]", "path-injection"] + - ["Foundation.FileManager", "Member[replaceItemAtURL].Argument[originalItemURL:,withItemAtURL:]", "path-injection"] + - ["Foundation.FileManager", "Member[setAttributes].Argument[ofItemAtPath:]", "path-injection"] + - ["Foundation.FileManager", "Member[subpaths].Argument[atPath:]", "path-injection"] + - ["Foundation.FileManager", "Member[subpathsOfDirectory].Argument[atPath:]", "path-injection"] + - ["Foundation.FileManager", "Member[trashItem].Argument[at:]", "path-injection"] + - ["Foundation.FileManager", "Member[unmountVolume].Argument[at:]", "path-injection"] + - ["Foundation.Data.Type", "Member[init].WithNamedArgument[contentsOf].WithNamedArgument[options].Argument[contentsOf:]", "path-injection"] + - ["Foundation.Data", "Member[md5].Argument[self]", "weak-hash-input-MD5"] + - ["Foundation.Data", "Member[sha1].Argument[self]", "weak-hash-input-SHA1"] + - ["Foundation.Data", "Member[sha2].Argument[self]", "weak-password-hash-input-SHA2"] + - ["Foundation.Data", "Member[sha224].Argument[self]", "weak-password-hash-input-SHA224"] + - ["Foundation.Data", "Member[sha256].Argument[self]", "weak-password-hash-input-SHA256"] + - ["Foundation.Data", "Member[sha3].Argument[self]", "weak-password-hash-input-SHA3"] + - ["Foundation.Data", "Member[sha384].Argument[self]", "weak-password-hash-input-SHA384"] + - ["Foundation.Data", "Member[sha512].Argument[self]", "weak-password-hash-input-SHA512"] + - ["Foundation.Data", "Member[write].Argument[to:]", "path-injection"] + - ["Foundation.NSMutableString", "Member[insert].Argument[at:]", "nsstring-length"] + - ["Foundation.NSMutableString", "Member[character].Argument[at:]", "nsstring-length"] + - ["Foundation.NSMutableString", "Member[substring].WithNamedArgument[from].Argument[from:]", "nsstring-length"] + - ["Foundation.NSMutableString", "Member[substring].WithNamedArgument[to].Argument[to:]", "nsstring-length"] + - ["Foundation.NSPredicate.Type", "Member[init].WithNamedArgument[format].WithoutNamedArgument[argumentArray].WithoutNamedArgument[arguments].Argument[format:]", "predicate-injection"] + - ["Foundation.NSPredicate.Type", "Member[init].WithNamedArgument[arguments].Argument[format:]", "predicate-injection"] + - ["Foundation.NSPredicate.Type", "Member[init].WithNamedArgument[argumentArray].Argument[format:]", "predicate-injection"] + - ["Foundation.NSPredicate.Type", "Member[init].WithNamedArgument[fromMetadataQueryString].Argument[fromMetadataQueryString:]", "predicate-injection"] + - ["Foundation.NSRegularExpression.Type", "Member[init].Argument[pattern:]", "regex-use"] + - ["Foundation.URLSessionConfiguration", "Member[tlsMaximumSupportedProtocol]", "tls-protocol-version"] + - ["Foundation.URLSessionConfiguration", "Member[tlsMinimumSupportedProtocol]", "tls-protocol-version"] + - ["Foundation.URLSessionConfiguration", "Member[tlsMaximumSupportedProtocolVersion]", "tls-protocol-version"] + - ["Foundation.URLSessionConfiguration", "Member[tlsMinimumSupportedProtocolVersion]", "tls-protocol-version"] + - ["Foundation.NSRange.Type", "Member[init].Argument[location:,length:]", "nsstring-length"] + - ["Foundation.NSUserScriptTask.Type", "Member[init].Argument[url:]", "command-injection"] + - ["Foundation.NSUserUnixTask", "Member[execute].Argument[withArguments:]", "command-injection"] + - ["Foundation.Process", "Member[arguments]", "command-injection"] + - ["Foundation.Process", "Member[currentDirectory]", "command-injection"] + - ["Foundation.Process", "Member[currentDirectoryPath]", "command-injection"] + - ["Foundation.Process", "Member[environment]", "command-injection"] + - ["Foundation.Process", "Member[executableURL]", "command-injection"] + - ["Foundation.Process", "Member[launchPath]", "command-injection"] + - ["Foundation.Process.Type", "Member[launchedProcess].Argument[launchPath:,arguments:]", "command-injection"] + - ["Foundation.Process", "Member[run].WithoutNamedArgument[terminationHandler].Argument[0,arguments:]", "command-injection"] + - ["Foundation.Process.Type", "Member[run].WithoutNamedArgument[terminationHandler].Argument[0,arguments:]", "command-injection"] + - ["Foundation.Process", "Member[run].WithNamedArgument[terminationHandler].Argument[0,arguments:]", "command-injection"] + - ["Foundation.Process.Type", "Member[run].WithNamedArgument[terminationHandler].Argument[0,arguments:]", "command-injection"] + - ["Foundation.Process", "Member[standardError]", "command-injection"] + - ["Foundation.Process", "Member[standardInput]", "command-injection"] + - ["Foundation.Process", "Member[standardOutput]", "command-injection"] + - ["Foundation.NSException.Type", "Member[init].Argument[reason:]", "log-injection"] + - ["Foundation.NSException", "Member[raise].Argument[format:,arguments:]", "log-injection"] + - ["Foundation.NSException.Type", "Member[raise].Argument[format:,arguments:]", "log-injection"] + - ["Foundation.Bundle.Type", "Member[init].WithNamedArgument[url].Argument[url:]", "path-injection"] + - ["Foundation.Bundle.Type", "Member[init].WithNamedArgument[path].Argument[path:]", "path-injection"] + - ["Foundation.NSKeyedUnarchiver", "Member[unarchiveObject].Argument[withFile:]", "path-injection"] + - addsTo: + pack: codeql/unified-all + extensible: summaryModel + data: + - ["Foundation.URL.Type", "Member[init]", "Argument[0]", "ReturnValue.OptionalSome", "taint"] + - ["Foundation.URL.Type", "Member[init].WithNamedArgument[fileReferenceLiteralResourceName]", "Argument[fileReferenceLiteralResourceName:]", "ReturnValue", "taint"] + - ["Foundation.URL.Type", "Member[init].WithNamedArgument[string].WithoutNamedArgument[encodingInvalidCharacters].WithoutNamedArgument[relativeTo]", "Argument[string:]", "ReturnValue.OptionalSome", "taint"] + - ["Foundation.URL", "Member[appendingPathExtension].WithNamedArgument[for]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.URL", "Member[appendingPathComponent]", "Argument[self,0]", "ReturnValue", "taint"] + - ["Foundation.URL", "Member[appendingPathExtension]", "Argument[self,0]", "ReturnValue", "taint"] + - ["Foundation.URL", "Member[appendingPathComponent].WithNamedArgument[isDirectory]", "Argument[self,0]", "ReturnValue", "taint"] + - ["Foundation.URL", "Member[appendingPathComponent].WithNamedArgument[conformingTo]", "Argument[self,0]", "ReturnValue", "taint"] + - ["Foundation.URL", "Member[formatted]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.URL", "Member[formatted]", "Argument[self,0]", "ReturnValue", "taint"] + - ["Foundation.URL.Type", "Member[init].WithNamedArgument[strategy]", "Argument[0]", "ReturnValue", "taint"] + - ["Foundation.URL", "Member[append].WithNamedArgument[component]", "Argument[self,component:]", "Argument[self]", "taint"] + - ["Foundation.URL", "Member[append].WithNamedArgument[components]", "Argument[self,components:]", "Argument[self]", "taint"] + - ["Foundation.URL", "Member[append].WithNamedArgument[path]", "Argument[self,path:]", "Argument[self]", "taint"] + - ["Foundation.URL", "Member[append].WithNamedArgument[queryItems]", "Argument[self,queryItems:]", "Argument[self]", "taint"] + - ["Foundation.URL", "Member[appendPathComponent]", "Argument[self,0]", "Argument[self]", "taint"] + - ["Foundation.URL", "Member[appendPathComponent].WithNamedArgument[conformingTo]", "Argument[self,0]", "Argument[self]", "taint"] + - ["Foundation.URL", "Member[appendPathComponent].WithNamedArgument[isDirectory]", "Argument[self,0]", "Argument[self]", "taint"] + - ["Foundation.URL", "Member[appendPathExtension]", "Argument[self,0]", "Argument[self]", "taint"] + - ["Foundation.URL", "Member[appending].WithNamedArgument[component]", "Argument[self,component:]", "ReturnValue", "taint"] + - ["Foundation.URL", "Member[appending].WithNamedArgument[components]", "Argument[self,components:]", "ReturnValue", "taint"] + - ["Foundation.URL", "Member[appending].WithNamedArgument[path]", "Argument[self,path:]", "ReturnValue", "taint"] + - ["Foundation.URL", "Member[appending].WithNamedArgument[queryItems]", "Argument[self,queryItems:]", "ReturnValue", "taint"] + - ["Foundation.URL", "Member[bookmarkData].WithNamedArgument[includingResourceValuesForKeys]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.URL", "Member[bookmarkData].WithNamedArgument[includingResourceValuesForKeys]", "Argument[includingResourceValuesForKeys:].OptionalSome.CollectionElement", "ReturnValue", "taint"] + - ["Foundation.URL.Type", "Member[bookmarkData].WithNamedArgument[includingResourceValuesForKeys]", "Argument[includingResourceValuesForKeys:].OptionalSome.CollectionElement", "ReturnValue", "taint"] + - ["Foundation.URL", "Member[bookmarkData].WithNamedArgument[includingResourceValuesForKeys]", "Argument[relativeTo:].OptionalSome", "ReturnValue", "taint"] + - ["Foundation.URL.Type", "Member[bookmarkData].WithNamedArgument[includingResourceValuesForKeys]", "Argument[relativeTo:].OptionalSome", "ReturnValue", "taint"] + - ["Foundation.URL", "Member[bookmarkData].WithNamedArgument[withContentsOf]", "Argument[withContentsOf:]", "ReturnValue", "taint"] + - ["Foundation.URL.Type", "Member[bookmarkData].WithNamedArgument[withContentsOf]", "Argument[withContentsOf:]", "ReturnValue", "taint"] + - ["Foundation.URL", "Member[deletingLastPathComponent]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.URL", "Member[deletingPathExtension]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.URL", "Member[fragment]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.URL.Type", "Member[homeDirectory]", "Argument[forUser:]", "ReturnValue", "taint"] + - ["Foundation.URL", "Member[host]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.URL.Type", "Member[init].WithNamedArgument[isDirectory].WithoutNamedArgument[filePath].WithoutNamedArgument[fileURLWithFileSystemRepresentation].WithoutNamedArgument[fileURLWithPath]", "Argument[0]", "ReturnValue.OptionalSome", "taint"] + - ["Foundation.URL.Type", "Member[init].WithNamedArgument[dataRepresentation]", "Argument[dataRepresentation:]", "ReturnValue", "taint"] + - ["Foundation.URL.Type", "Member[init].WithNamedArgument[dataRepresentation]", "Argument[relativeTo:].OptionalSome", "ReturnValue", "taint"] + - ["Foundation.URL.Type", "Member[init].WithNamedArgument[filePath].WithoutNamedArgument[directoryHint].WithoutNamedArgument[isDirectory]", "Argument[filePath:]", "ReturnValue.OptionalSome", "taint"] + - ["Foundation.URL.Type", "Member[init].WithNamedArgument[directoryHint].WithoutNamedArgument[relativeTo]", "Argument[filePath:]", "ReturnValue.OptionalSome", "taint"] + - ["Foundation.URL.Type", "Member[init].WithNamedArgument[directoryHint].WithNamedArgument[relativeTo]", "Argument[filePath:]", "ReturnValue", "taint"] + - ["Foundation.URL.Type", "Member[init].WithNamedArgument[directoryHint].WithNamedArgument[relativeTo]", "Argument[relativeTo:].OptionalSome", "ReturnValue", "taint"] + - ["Foundation.URL.Type", "Member[init].WithNamedArgument[filePath].WithNamedArgument[isDirectory]", "Argument[filePath:]", "ReturnValue.OptionalSome", "taint"] + - ["Foundation.URL.Type", "Member[init].WithNamedArgument[fileURLWithFileSystemRepresentation]", "Argument[fileURLWithFileSystemRepresentation:]", "ReturnValue", "taint"] + - ["Foundation.URL.Type", "Member[init].WithNamedArgument[fileURLWithFileSystemRepresentation]", "Argument[relativeTo:].OptionalSome", "ReturnValue", "taint"] + - ["Foundation.URL.Type", "Member[init].WithNamedArgument[fileURLWithPath].WithoutNamedArgument[isDirectory].WithoutNamedArgument[relativeTo]", "Argument[fileURLWithPath:]", "ReturnValue", "taint"] + - ["Foundation.URL.Type", "Member[init].WithNamedArgument[fileURLWithPath].WithNamedArgument[isDirectory].WithoutNamedArgument[relativeTo]", "Argument[fileURLWithPath:]", "ReturnValue", "taint"] + - ["Foundation.URL.Type", "Member[init].WithNamedArgument[fileURLWithPath].WithNamedArgument[isDirectory].WithNamedArgument[relativeTo]", "Argument[fileURLWithPath:]", "ReturnValue", "taint"] + - ["Foundation.URL.Type", "Member[init].WithNamedArgument[fileURLWithPath].WithNamedArgument[isDirectory].WithNamedArgument[relativeTo]", "Argument[relativeTo:].OptionalSome", "ReturnValue", "taint"] + - ["Foundation.URL.Type", "Member[init].WithNamedArgument[fileURLWithPath].WithNamedArgument[relativeTo].WithoutNamedArgument[isDirectory]", "Argument[fileURLWithPath:]", "ReturnValue", "taint"] + - ["Foundation.URL.Type", "Member[init].WithNamedArgument[fileURLWithPath].WithNamedArgument[relativeTo].WithoutNamedArgument[isDirectory]", "Argument[relativeTo:].OptionalSome", "ReturnValue", "taint"] + - ["Foundation.URL.Type", "Member[init].WithNamedArgument[appropriateFor]", "Argument[for:,in:]", "ReturnValue", "taint"] + - ["Foundation.URL.Type", "Member[init].WithNamedArgument[appropriateFor]", "Argument[appropriateFor:].OptionalSome", "ReturnValue", "taint"] + - ["Foundation.URL.Type", "Member[init].WithNamedArgument[resolvingAliasFileAt]", "Argument[resolvingAliasFileAt:]", "ReturnValue", "taint"] + - ["Foundation.URL.Type", "Member[init].WithNamedArgument[bookmarkDataIsStale]", "Argument[resolvingBookmarkData:]", "ReturnValue", "taint"] + - ["Foundation.URL.Type", "Member[init].WithNamedArgument[bookmarkDataIsStale]", "Argument[relativeTo:].OptionalSome", "ReturnValue", "taint"] + - ["Foundation.URL.Type", "Member[init].WithNamedArgument[resource]", "Argument[resource:]", "ReturnValue", "taint"] + - ["Foundation.URL.Type", "Member[init].WithNamedArgument[encodingInvalidCharacters]", "Argument[string:]", "ReturnValue.OptionalSome", "taint"] + - ["Foundation.URL.Type", "Member[init].WithNamedArgument[relativeTo].WithNamedArgument[string]", "Argument[string:]", "ReturnValue.OptionalSome", "taint"] + - ["Foundation.URL.Type", "Member[init].WithNamedArgument[relativeTo].WithNamedArgument[string]", "Argument[relativeTo:].OptionalSome", "ReturnValue.OptionalSome", "taint"] + - ["Foundation.URL", "Member[password]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.URL", "Member[path]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.URL", "Member[promisedItemResourceValues]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.URL", "Member[query]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.URL", "Member[resolvingSymlinksInPath]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.URL", "Member[resourceValues].WithoutNamedArgument[fromBookmarkData]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.URL", "Member[resourceValues].WithNamedArgument[fromBookmarkData]", "Argument[fromBookmarkData:]", "ReturnValue", "taint"] + - ["Foundation.URL.Type", "Member[resourceValues]", "Argument[fromBookmarkData:]", "ReturnValue", "taint"] + - ["Foundation.URL", "Member[setResourceValues]", "Argument[0]", "Argument[self]", "taint"] + - ["Foundation.URL", "Member[setTemporaryResourceValue]", "Argument[self,0]", "Argument[self]", "taint"] + - ["Foundation.URL", "Member[user]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.URL", "Member[withUnsafeFileSystemRepresentation]", "Argument[self]", "Argument[0].Parameter[0].OptionalSome.CollectionElement", "taint"] + - ["Foundation.URL", "Member[withUnsafeFileSystemRepresentation]", "Argument[0].ReturnValue", "ReturnValue", "taint"] + - ["Foundation.NSData.Type", "Member[init].WithNamedArgument[contentsOf].WithoutNamedArgument[options]", "Argument[contentsOf:]", "ReturnValue", "taint"] + - ["Foundation.NSData.Type", "Member[init].WithNamedArgument[contentsOfFile].WithoutNamedArgument[options]", "Argument[contentsOfFile:]", "ReturnValue", "taint"] + - ["Foundation.NSData.Type", "Member[init].WithNamedArgument[contentsOf].WithNamedArgument[options]", "Argument[contentsOf:]", "ReturnValue", "taint"] + - ["Foundation.NSData.Type", "Member[init].WithNamedArgument[data]", "Argument[data:]", "ReturnValue", "taint"] + - ["Foundation.NSData.Type", "Member[init].WithNamedArgument[bytes]", "Argument[bytes:]", "ReturnValue", "taint"] + - ["Foundation.NSData", "Member[base64EncodedData]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSData", "Member[base64EncodedString]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSData", "Member[base64Encoding]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSData", "Member[compressed]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSData.Type", "Member[dataWithContentsOfMappedFile]", "Argument[0]", "ReturnValue", "taint"] + - ["Foundation.NSData", "Member[decompressed]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSData", "Member[enumerateBytes]", "Argument[self]", "Argument[0].Parameter[0]", "taint"] + - ["Foundation.NSData", "Member[getBytes]", "Argument[self]", "Argument[0]", "taint"] + - ["Foundation.NSData", "Member[getBytes].WithNamedArgument[length]", "Argument[self]", "Argument[0]", "taint"] + - ["Foundation.NSData", "Member[getBytes].WithNamedArgument[range]", "Argument[self]", "Argument[0]", "taint"] + - ["Foundation.NSData.Type", "Member[init].WithNamedArgument[base64Encoded]", "Argument[base64Encoded:]", "ReturnValue", "taint"] + - ["Foundation.NSData.Type", "Member[init].WithNamedArgument[base64Encoding]", "Argument[base64Encoding:]", "ReturnValue", "taint"] + - ["Foundation.NSData.Type", "Member[init].WithNamedArgument[bytesNoCopy].WithoutNamedArgument[deallocator].WithoutNamedArgument[freeWhenDone]", "Argument[bytesNoCopy:]", "ReturnValue", "taint"] + - ["Foundation.NSData.Type", "Member[init].WithNamedArgument[deallocator]", "Argument[bytesNoCopy:]", "ReturnValue", "taint"] + - ["Foundation.NSData.Type", "Member[init].WithNamedArgument[freeWhenDone]", "Argument[bytesNoCopy:]", "ReturnValue", "taint"] + - ["Foundation.NSData.Type", "Member[init].WithNamedArgument[contentsOfFile].WithNamedArgument[options]", "Argument[contentsOfFile:]", "ReturnValue", "taint"] + - ["Foundation.NSData.Type", "Member[init].WithNamedArgument[contentsOfMappedFile]", "Argument[contentsOfMappedFile:]", "ReturnValue", "taint"] + - ["Foundation.NSData", "Member[subdata]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[coder]", "Argument[coder:]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[cString].WithoutNamedArgument[encoding].WithoutNamedArgument[length]", "Argument[cString:]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[getBytes]", "Argument[self]", "Argument[0]", "taint"] + - ["Foundation.NSString", "Member[getCharacters].WithNamedArgument[range]", "Argument[self]", "Argument[0]", "taint"] + - ["Foundation.NSString", "Member[character]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[getCString].WithNamedArgument[encoding]", "Argument[self]", "Argument[0]", "taint"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[string]", "Argument[string:]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[appending]", "Argument[self,0]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[contentsOf].WithoutNamedArgument[encoding].WithoutNamedArgument[usedEncoding]", "Argument[contentsOf:]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[contentsOfFile].WithoutNamedArgument[encoding].WithoutNamedArgument[usedEncoding]", "Argument[contentsOfFile:]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[string].WithNamedArgument[withContentsOf]", "Argument[withContentsOf:]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[contentsOf].WithNamedArgument[encoding]", "Argument[contentsOf:]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[string].WithNamedArgument[withContentsOfFile]", "Argument[withContentsOfFile:]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[contentsOfFile].WithNamedArgument[encoding]", "Argument[contentsOfFile:]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[contentsOf].WithNamedArgument[usedEncoding]", "Argument[contentsOf:]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[contentsOfFile].WithNamedArgument[usedEncoding]", "Argument[contentsOfFile:]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[appendingPathComponent]", "Argument[self,0]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[appendingPathExtension]", "Argument[self,0]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[appendingPathComponent].WithNamedArgument[conformingTo]", "Argument[self,0]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[addingPercentEncoding]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[addingPercentEscapes]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[appendingFormat]", "Argument[self,0]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[appendingFormat]", "Argument[1].CollectionElement", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[applyTransform]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[applyingTransform]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[cString]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[cString].WithNamedArgument[using]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[capitalized]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[completePath]", "Argument[self]", "Argument[into:].CollectionElement", "taint"] + - ["Foundation.NSString", "Member[completePath]", "Argument[self]", "Argument[matchesInto:].CollectionElement.CollectionElement", "taint"] + - ["Foundation.NSString", "Member[components]", "Argument[self]", "ReturnValue.CollectionElement", "taint"] + - ["Foundation.NSString", "Member[data].WithoutNamedArgument[allowLossyConversion]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[data].WithNamedArgument[allowLossyConversion]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[enumerateLines]", "Argument[self]", "Argument[0].Parameter[0]", "taint"] + - ["Foundation.NSString", "Member[enumerateLinguisticTags]", "Argument[self]", "Argument[using:].Parameter[0].OptionalSome", "taint"] + - ["Foundation.NSString", "Member[enumerateSubstrings]", "Argument[self]", "Argument[using:].Parameter[0].OptionalSome", "taint"] + - ["Foundation.NSString", "Member[enumerateSubstrings]", "Argument[using:].Parameter[0].OptionalSome", "Argument[self]", "taint"] + - ["Foundation.NSString", "Member[folding]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[getCString]", "Argument[self]", "Argument[0]", "taint"] + - ["Foundation.NSString", "Member[getCString].WithNamedArgument[maxLength].WithoutNamedArgument[encoding].WithoutNamedArgument[range]", "Argument[self]", "Argument[0]", "taint"] + - ["Foundation.NSString", "Member[getCString].WithNamedArgument[range]", "Argument[self]", "Argument[0]", "taint"] + - ["Foundation.NSString", "Member[getCharacters]", "Argument[self]", "Argument[0]", "taint"] + - ["Foundation.NSString", "Member[getFileSystemRepresentation]", "Argument[self]", "Argument[0]", "taint"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[bytes]", "Argument[bytes:]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[deallocator]", "Argument[bytesNoCopy:]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[bytesNoCopy].WithNamedArgument[freeWhenDone]", "Argument[bytesNoCopy:]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[cString].WithNamedArgument[encoding]", "Argument[cString:]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[cString].WithNamedArgument[length]", "Argument[cString:]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[cStringNoCopy]", "Argument[cStringNoCopy:]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[characters]", "Argument[characters:]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[dellocator]", "Argument[charactersNoCopy:]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[charactersNoCopy].WithNamedArgument[freeWhenDone]", "Argument[charactersNoCopy:]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[data]", "Argument[data:]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[format].WithoutNamedArgument[arguments].WithoutNamedArgument[locale]", "Argument[format:]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[format].WithoutNamedArgument[arguments].WithoutNamedArgument[locale]", "Argument[1].CollectionElement", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[arguments].WithoutNamedArgument[locale]", "Argument[format:,arguments:]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[locale].WithoutNamedArgument[arguments]", "Argument[format:]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[locale].WithoutNamedArgument[arguments]", "Argument[2].CollectionElement", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[arguments].WithNamedArgument[locale]", "Argument[format:]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[arguments].WithNamedArgument[locale]", "Argument[arguments:]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[init].WithNamedArgument[utf8String]", "Argument[utf8String:]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[localizedStringWithFormat]", "Argument[0]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[localizedStringWithFormat]", "Argument[1].CollectionElement", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[lossyCString]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[lowercased]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[padding]", "Argument[withPad:]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[padding]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[path]", "Argument[withComponents:].CollectionElement", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[propertyList]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[propertyListFromStringsFileFormat]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[replacingCharacters]", "Argument[with:]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[replacingCharacters]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[replacingOccurrences].WithoutNamedArgument[options]", "Argument[with:]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[replacingOccurrences].WithoutNamedArgument[options]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[replacingOccurrences].WithNamedArgument[options]", "Argument[with:]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[replacingOccurrences].WithNamedArgument[options]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[replacingPercentEscapes]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[string].WithNamedArgument[withCString].WithoutNamedArgument[length]", "Argument[withCString:]", "ReturnValue", "taint"] + - ["Foundation.NSString.Type", "Member[string].WithNamedArgument[length]", "Argument[withCString:]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[stringEncoding]", "Argument[for:]", "Argument[convertedString:]", "taint"] + - ["Foundation.NSString", "Member[strings]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[strings]", "Argument[byAppendingPaths:].CollectionElement", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[substring].WithNamedArgument[from]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[substring].WithNamedArgument[to]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[substring].WithNamedArgument[with]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[trimmingCharacters]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[uppercased]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSString", "Member[variantFittingPresentationWidth]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.Data.Type", "Member[init]", "Argument[0]", "ReturnValue", "taint"] + - ["Foundation.Data", "Member[append]", "Argument[0]", "Argument[self]", "taint"] + - ["Foundation.Data", "Member[insert]", "Argument[contentsOf:]", "Argument[self]", "taint"] + - ["Foundation.Data", "Member[replaceSubrange].WithoutNamedArgument[count]", "Argument[with:]", "Argument[self]", "taint"] + - ["Foundation.Data", "Member[withUnsafeMutableBytes]", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint"] + - ["Foundation.Data", "Member[withUnsafeMutableBytes]", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "taint"] + - ["Foundation.Data", "Member[withUnsafeMutableBytes]", "Argument[0].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "taint"] + - ["Foundation.Data", "Member[withUnsafeMutableBytes]", "Argument[0].ReturnValue", "ReturnValue", "value"] + - ["Foundation.Data", "Member[map]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.Data", "Member[shuffled]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.Data", "Member[shuffled].WithNamedArgument[using]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.Data", "Member[compactMap]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.Data", "Member[flatMap]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.Data", "Member[reduce]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.Data", "Member[sorted]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.Data", "Member[sorted].WithNamedArgument[by]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.Data", "Member[replace]", "Argument[with:]", "Argument[self]", "taint"] + - ["Foundation.Data", "Member[replacing].WithoutNamedArgument[subrange]", "Argument[with:]", "Argument[self]", "taint"] + - ["Foundation.Data", "Member[replacing].WithNamedArgument[subrange]", "Argument[with:]", "Argument[self]", "taint"] + - ["Foundation.Data", "Member[trimmingPrefix].WithNamedArgument[while]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.Data", "Member[trimmingPrefix]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.Data.Type", "Member[init].WithNamedArgument[contentsOf].WithNamedArgument[options]", "Argument[contentsOf:]", "ReturnValue", "taint"] + - ["Foundation.Data", "Member[base64EncodedData]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.Data", "Member[base64EncodedString]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.Data.Type", "Member[init].WithNamedArgument[base64Encoded]", "Argument[base64Encoded:]", "ReturnValue", "taint"] + - ["Foundation.Data.Type", "Member[init].WithNamedArgument[buffer]", "Argument[buffer:]", "ReturnValue", "taint"] + - ["Foundation.Data.Type", "Member[init].WithNamedArgument[bytes]", "Argument[bytes:]", "ReturnValue", "taint"] + - ["Foundation.Data.Type", "Member[init].WithNamedArgument[bytesNoCopy]", "Argument[bytesNoCopy:]", "ReturnValue", "taint"] + - ["Foundation.Data.Type", "Member[init].WithNamedArgument[referencing]", "Argument[referencing:]", "ReturnValue", "taint"] + - ["Foundation.Data", "Member[replaceSubrange].WithNamedArgument[count]", "Argument[with:]", "Argument[self]", "taint"] + - ["Foundation.Data", "Member[sorted].WithNamedArgument[using]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSCopying", "Member[copy]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.InputStream.Type", "Member[init]", "Argument[data:]", "ReturnValue", "taint"] + - ["Foundation.NSMutableData", "Member[append]", "Argument[0]", "Argument[self]", "taint"] + - ["Foundation.NSMutableData", "Member[setData]", "Argument[0]", "Argument[self]", "taint"] + - ["Foundation.NSMutableData", "Member[append].WithNamedArgument[length]", "Argument[0]", "Argument[self]", "taint"] + - ["Foundation.NSMutableData", "Member[replaceBytes].WithoutNamedArgument[length]", "Argument[withBytes:]", "Argument[self]", "taint"] + - ["Foundation.NSMutableData", "Member[replaceBytes].WithNamedArgument[length]", "Argument[withBytes:]", "Argument[self]", "taint"] + - ["Foundation.NSURL.Type", "Member[init]", "Argument[string:]", "ReturnValue.OptionalSome", "taint"] + - ["Foundation.NSURL", "Member[appendingPathExtension].WithNamedArgument[for]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.NSURL", "Member[appendingPathComponent]", "Argument[self,0]", "ReturnValue", "taint"] + - ["Foundation.NSURL", "Member[appendingPathExtension]", "Argument[self,0]", "ReturnValue", "taint"] + - ["Foundation.NSURL", "Member[appendingPathComponent].WithNamedArgument[isDirectory]", "Argument[self,0]", "ReturnValue", "taint"] + - ["Foundation.NSURL", "Member[appendingPathComponent].WithNamedArgument[conformingTo]", "Argument[self,0]", "ReturnValue", "taint"] + - ["Foundation.NSMutableCopying", "Member[mutableCopy]", "Argument[self]", "ReturnValue", "taint"] + - ["Foundation.URLSession", "Member[dataTask]", "Argument[with:]", "Argument[completionHandler:].Parameter[0]", "taint"] + - ["Foundation.DataProtocol", "Member[copyBytes].WithoutNamedArgument[count].WithoutNamedArgument[from]", "Argument[self]", "Argument[to:]", "taint"] + - ["Foundation.DataProtocol", "Member[copyBytes].WithNamedArgument[count]", "Argument[self]", "Argument[to:]", "taint"] + - ["Foundation.DataProtocol", "Member[copyBytes].WithNamedArgument[from]", "Argument[self]", "Argument[to:]", "taint"] + - ["Foundation.ContiguousBytes", "Member[withUnsafeBytes]", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint"] + - ["Foundation.ContiguousBytes", "Member[withUnsafeBytes]", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "taint"] + - ["Foundation.ContiguousBytes", "Member[withUnsafeBytes]", "Argument[0].ReturnValue", "ReturnValue", "value"] + - ["Foundation.URLResource.Type", "Member[init]", "Argument[name:,subdirectory:]", "ReturnValue", "taint"] + - ["Foundation.NSMutableString", "Member[append]", "Argument[0]", "Argument[self]", "taint"] + - ["Foundation.NSMutableString", "Member[insert]", "Argument[0]", "Argument[self]", "taint"] + - ["Foundation.NSMutableString", "Member[appendFormat]", "Argument[0]", "Argument[self]", "taint"] + - ["Foundation.NSMutableString", "Member[appendFormat]", "Argument[1].CollectionElement", "Argument[self]", "taint"] + - ["Foundation.NSMutableString", "Member[replaceCharacters]", "Argument[with:]", "Argument[self]", "taint"] + - ["Foundation.NSMutableString", "Member[replaceOccurrences]", "Argument[with:]", "Argument[self]", "taint"] + - ["Foundation.NSMutableString", "Member[setString]", "Argument[0]", "Argument[self]", "taint"] diff --git a/unified/ql/lib/ext/swift-grdb.model.yml b/unified/ql/lib/ext/swift-grdb.model.yml new file mode 100644 index 000000000000..99e753b63bb8 --- /dev/null +++ b/unified/ql/lib/ext/swift-grdb.model.yml @@ -0,0 +1,41 @@ +extensions: + - addsTo: + pack: codeql/unified-all + extensible: sinkModel + data: + - ["GRDB.Database", "Member[changePassphrase].Argument[0]", "encryption-key"] + - ["GRDB.Database", "Member[usePassphrase].Argument[0]", "encryption-key"] + - ["GRDB.Database", "Member[allStatements].Argument[arguments:]", "database-store"] + - ["GRDB.Database", "Member[execute].Argument[arguments:]", "database-store"] + - ["GRDB.Database.Type", "Member[init].Argument[path:]", "path-injection"] + - ["GRDB.CommonTableExpression.Type", "Member[init].Argument[arguments:]", "database-store"] + - ["GRDB.DatabaseValueConvertible", "Member[fetchAll].Argument[arguments:]", "database-store"] + - ["GRDB.DatabaseValueConvertible", "Member[fetchCursor].Argument[arguments:]", "database-store"] + - ["GRDB.DatabaseValueConvertible", "Member[fetchOne].Argument[arguments:]", "database-store"] + - ["GRDB.DatabaseValueConvertible", "Member[fetchSet].Argument[arguments:]", "database-store"] + - ["GRDB.FetchableRecord", "Member[fetchAll].WithNamedArgument[sql].Argument[arguments:]", "database-store"] + - ["GRDB.FetchableRecord", "Member[fetchCursor].WithNamedArgument[sql].Argument[arguments:]", "database-store"] + - ["GRDB.FetchableRecord", "Member[fetchOne].WithNamedArgument[sql].Argument[arguments:]", "database-store"] + - ["GRDB.FetchableRecord", "Member[fetchSet].WithNamedArgument[sql].Argument[arguments:]", "database-store"] + - ["GRDB.FetchableRecord", "Member[fetchAll].WithoutNamedArgument[sql].Argument[arguments:]", "database-store"] + - ["GRDB.FetchableRecord", "Member[fetchCursor].WithoutNamedArgument[sql].Argument[arguments:]", "database-store"] + - ["GRDB.FetchableRecord", "Member[fetchOne].WithoutNamedArgument[sql].Argument[arguments:]", "database-store"] + - ["GRDB.FetchableRecord", "Member[fetchSet].WithoutNamedArgument[sql].Argument[arguments:]", "database-store"] + - ["GRDB.Row", "Member[fetchAll].Argument[arguments:]", "database-store"] + - ["GRDB.Row", "Member[fetchCursor].Argument[arguments:]", "database-store"] + - ["GRDB.Row", "Member[fetchOne].Argument[arguments:]", "database-store"] + - ["GRDB.Row", "Member[fetchSet].Argument[arguments:]", "database-store"] + - ["GRDB.SQL", "Member[append].Argument[arguments:]", "database-store"] + - ["GRDB.SQL.Type", "Member[init].Argument[arguments:]", "database-store"] + - ["GRDB.SQLRequest.Type", "Member[init].Argument[arguments:]", "database-store"] + - ["GRDB.SQLStatementCursor.Type", "Member[init].Argument[arguments:]", "database-store"] + - ["GRDB.Statement", "Member[execute].Argument[arguments:]", "database-store"] + - ["GRDB.Statement", "Member[setArguments].Argument[0]", "database-store"] + - ["GRDB.TableRecord.Type", "Member[filter].Argument[arguments:]", "database-store"] + - ["GRDB.TableRecord.Type", "Member[order].Argument[arguments:]", "database-store"] + - ["GRDB.TableRecord.Type", "Member[select].WithoutNamedArgument[as].Argument[arguments:]", "database-store"] + - ["GRDB.TableRecord.Type", "Member[select].WithNamedArgument[as].Argument[arguments:]", "database-store"] + - ["GRDB.DatabasePool.Type", "Member[init].Argument[path:]", "path-injection"] + - ["GRDB.DatabaseQueue.Type", "Member[init].Argument[path:]", "path-injection"] + - ["GRDB.DatabaseSnapshotPool.Type", "Member[init].Argument[path:]", "path-injection"] + - ["GRDB.SerializedDatabase.Type", "Member[init].Argument[path:]", "path-injection"] diff --git a/unified/ql/lib/ext/swift-javascriptcore.model.yml b/unified/ql/lib/ext/swift-javascriptcore.model.yml new file mode 100644 index 000000000000..d4f9af9b1a63 --- /dev/null +++ b/unified/ql/lib/ext/swift-javascriptcore.model.yml @@ -0,0 +1,44 @@ +extensions: + - addsTo: + pack: codeql/unified-all + extensible: sourceModel + data: + - ["JavaScriptCore.JSContext", "Member[globalObject]", "remote"] + - ["JavaScriptCore.JSContext", "Member[objectForKeyedSubscript].ReturnValue", "remote"] + - ["JavaScriptCore.JSContext", "Member[objectAtIndexedSubscript].ReturnValue", "remote"] + - addsTo: + pack: codeql/unified-all + extensible: summaryModel + data: + - ["JavaScriptCore", "Member[JSStringRetain]", "Argument[0]", "ReturnValue", "taint"] + - ["JavaScriptCore", "Member[JSStringCreateWithUTF8CString]", "Argument[0]", "ReturnValue", "taint"] + - ["JavaScriptCore", "Member[JSStringCreateWithCharacters]", "Argument[0]", "ReturnValue", "taint"] + - ["JavaScriptCore.JSValue", "Member[atIndex]", "Argument[self]", "ReturnValue", "taint"] + - ["JavaScriptCore.JSValue", "Member[defineProperty]", "Argument[descriptor:]", "Argument[self]", "taint"] + - ["JavaScriptCore.JSValue", "Member[forProperty]", "Argument[self]", "ReturnValue", "taint"] + - ["JavaScriptCore.JSValue.Type", "Member[init].WithNamedArgument[bool]", "Argument[bool:]", "ReturnValue", "taint"] + - ["JavaScriptCore.JSValue.Type", "Member[init].WithNamedArgument[double]", "Argument[double:]", "ReturnValue", "taint"] + - ["JavaScriptCore.JSValue.Type", "Member[init].WithNamedArgument[int32]", "Argument[int32:]", "ReturnValue", "taint"] + - ["JavaScriptCore.JSValue.Type", "Member[init].WithNamedArgument[object]", "Argument[object:]", "ReturnValue", "taint"] + - ["JavaScriptCore.JSValue.Type", "Member[init].WithNamedArgument[point]", "Argument[point:]", "ReturnValue", "taint"] + - ["JavaScriptCore.JSValue.Type", "Member[init].WithNamedArgument[range]", "Argument[range:]", "ReturnValue", "taint"] + - ["JavaScriptCore.JSValue.Type", "Member[init].WithNamedArgument[rect]", "Argument[rect:]", "ReturnValue", "taint"] + - ["JavaScriptCore.JSValue.Type", "Member[init].WithNamedArgument[size]", "Argument[size:]", "ReturnValue", "taint"] + - ["JavaScriptCore.JSValue.Type", "Member[init].WithNamedArgument[uInt32]", "Argument[uInt32:]", "ReturnValue", "taint"] + - ["JavaScriptCore.JSValue", "Member[setValue].WithNamedArgument[at]", "Argument[0]", "Argument[self]", "taint"] + - ["JavaScriptCore.JSValue", "Member[setValue].WithNamedArgument[forProperty]", "Argument[0]", "Argument[self]", "taint"] + - ["JavaScriptCore.JSValue", "Member[toArray]", "Argument[self]", "ReturnValue", "taint"] + - ["JavaScriptCore.JSValue", "Member[toBool]", "Argument[self]", "ReturnValue", "taint"] + - ["JavaScriptCore.JSValue", "Member[toDate]", "Argument[self]", "ReturnValue", "taint"] + - ["JavaScriptCore.JSValue", "Member[toDictionary]", "Argument[self]", "ReturnValue", "taint"] + - ["JavaScriptCore.JSValue", "Member[toDouble]", "Argument[self]", "ReturnValue", "taint"] + - ["JavaScriptCore.JSValue", "Member[toInt32]", "Argument[self]", "ReturnValue", "taint"] + - ["JavaScriptCore.JSValue", "Member[toNumber]", "Argument[self]", "ReturnValue", "taint"] + - ["JavaScriptCore.JSValue", "Member[toObject]", "Argument[self]", "ReturnValue", "taint"] + - ["JavaScriptCore.JSValue", "Member[toObjectOf]", "Argument[self]", "ReturnValue", "taint"] + - ["JavaScriptCore.JSValue", "Member[toPoint]", "Argument[self]", "ReturnValue", "taint"] + - ["JavaScriptCore.JSValue", "Member[toRange]", "Argument[self]", "ReturnValue", "taint"] + - ["JavaScriptCore.JSValue", "Member[toRect]", "Argument[self]", "ReturnValue", "taint"] + - ["JavaScriptCore.JSValue", "Member[toSize]", "Argument[self]", "ReturnValue", "taint"] + - ["JavaScriptCore.JSValue", "Member[toString]", "Argument[self]", "ReturnValue", "taint"] + - ["JavaScriptCore.JSValue", "Member[toUInt32]", "Argument[self]", "ReturnValue", "taint"] diff --git a/unified/ql/lib/ext/swift-logging.model.yml b/unified/ql/lib/ext/swift-logging.model.yml new file mode 100644 index 000000000000..5aab93b1a0ae --- /dev/null +++ b/unified/ql/lib/ext/swift-logging.model.yml @@ -0,0 +1,15 @@ +extensions: + - addsTo: + pack: codeql/unified-all + extensible: sinkModel + data: + - ["Logging.Logger", "Member[warning].Argument[0]", "log-injection"] + - ["Logging.Logger", "Member[error].Argument[0]", "log-injection"] + - ["Logging.Logger", "Member[critical].Argument[0]", "log-injection"] + - ["Logging.Logger", "Member[debug].Argument[0]", "log-injection"] + - ["Logging.Logger", "Member[fault].Argument[0]", "log-injection"] + - ["Logging.Logger", "Member[info].Argument[0]", "log-injection"] + - ["Logging.Logger", "Member[log].Argument[0]", "log-injection"] + - ["Logging.Logger", "Member[log].WithNamedArgument[level].Argument[0]", "log-injection"] + - ["Logging.Logger", "Member[notice].Argument[0]", "log-injection"] + - ["Logging.Logger", "Member[trace].Argument[0]", "log-injection"] diff --git a/unified/ql/lib/ext/swift-modules.model.yml b/unified/ql/lib/ext/swift-modules.model.yml new file mode 100644 index 000000000000..9e1af6b0ce39 --- /dev/null +++ b/unified/ql/lib/ext/swift-modules.model.yml @@ -0,0 +1,26 @@ +# Hand-written type models describing module re-exports, and types that are imported from +# Objective-C headers and are therefore not covered by type models generated from `.swiftinterface` files. +extensions: + - addsTo: + pack: codeql/unified-all + extensible: typeModel + data: + # Module re-exports: `(M1, M2, "")` means importing M2 makes the members of M1 available. + - ["_StringProcessing", "Swift", ""] + - ["_Concurrency", "Swift", ""] + - ["ObjectiveC", "Foundation", ""] + - ["Darwin", "Foundation", ""] + - ["Foundation", "UIKit", ""] + - ["Foundation", "AppKit", ""] + - ["Foundation", "Cocoa", ""] + - ["AppKit", "Cocoa", ""] + - ["System", "SystemPackage", ""] + - ["NIOCore", "NIO", ""] + - ["NIOCore", "NIOPosix", ""] + # swift-crypto's `Crypto` module provides the same API as `CryptoKit` + - ["CryptoKit", "Crypto", ""] + # Types imported from Objective-C + - ["Foundation.FileManager", "Foundation.FileManager.Type", "Member[default]"] + - ["Foundation.URLSession", "Foundation.URLSession.Type", "Member[shared]"] + - ["Foundation.Process", "Foundation.Process.Type", "Member[launchedProcess].ReturnValue"] + - ["Foundation.Process", "Foundation.Process.Type", "Member[run].ReturnValue"] diff --git a/unified/ql/lib/ext/swift-network.model.yml b/unified/ql/lib/ext/swift-network.model.yml new file mode 100644 index 000000000000..affd09ae6faf --- /dev/null +++ b/unified/ql/lib/ext/swift-network.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/unified-all + extensible: sinkModel + data: + - ["Network.NWConnection", "Member[send].Argument[content:]", "transmission"] diff --git a/unified/ql/lib/ext/swift-niocore.model.yml b/unified/ql/lib/ext/swift-niocore.model.yml new file mode 100644 index 000000000000..517c71e65049 --- /dev/null +++ b/unified/ql/lib/ext/swift-niocore.model.yml @@ -0,0 +1,8 @@ +extensions: + - addsTo: + pack: codeql/unified-all + extensible: sinkModel + data: + - ["NIOCore.NIOFileHandle.Type", "Member[init].WithNamedArgument[path].WithoutNamedArgument[flags].Argument[path:]", "path-injection"] + - ["NIOCore.NIOFileHandle.Type", "Member[init].WithNamedArgument[descriptor].Argument[descriptor:]", "path-injection"] + - ["NIOCore.NIOFileHandle.Type", "Member[init].WithNamedArgument[flags].Argument[path:]", "path-injection"] diff --git a/unified/ql/lib/ext/swift-objectivec.model.yml b/unified/ql/lib/ext/swift-objectivec.model.yml new file mode 100644 index 000000000000..7abc69345673 --- /dev/null +++ b/unified/ql/lib/ext/swift-objectivec.model.yml @@ -0,0 +1,7 @@ +extensions: + - addsTo: + pack: codeql/unified-all + extensible: summaryModel + data: + - ["ObjectiveC.NSObject", "Member[copy]", "Argument[self]", "ReturnValue", "taint"] + - ["ObjectiveC.NSObject", "Member[mutableCopy]", "Argument[self]", "ReturnValue", "taint"] diff --git a/unified/ql/lib/ext/swift-os.model.yml b/unified/ql/lib/ext/swift-os.model.yml new file mode 100644 index 000000000000..b83c2ee60b41 --- /dev/null +++ b/unified/ql/lib/ext/swift-os.model.yml @@ -0,0 +1,19 @@ +extensions: + - addsTo: + pack: codeql/unified-all + extensible: sinkModel + data: + - ["os", "Member[os_log].Argument[0]", "log-injection"] + - ["os", "Member[os_log].WithNamedArgument[dso].WithoutNamedArgument[type].Argument[0,2]", "log-injection"] + - ["os", "Member[os_log].WithNamedArgument[type].Argument[0,1]", "log-injection"] + - ["os", "Member[os_log].WithNamedArgument[log].WithoutNamedArgument[dso].Argument[1]", "log-injection"] + - ["os.Logger", "Member[warning].Argument[0]", "log-injection"] + - ["os.Logger", "Member[error].Argument[0]", "log-injection"] + - ["os.Logger", "Member[critical].Argument[0]", "log-injection"] + - ["os.Logger", "Member[debug].Argument[0]", "log-injection"] + - ["os.Logger", "Member[fault].Argument[0]", "log-injection"] + - ["os.Logger", "Member[info].Argument[0]", "log-injection"] + - ["os.Logger", "Member[log].Argument[0]", "log-injection"] + - ["os.Logger", "Member[log].WithNamedArgument[level].Argument[0]", "log-injection"] + - ["os.Logger", "Member[notice].Argument[0]", "log-injection"] + - ["os.Logger", "Member[trace].Argument[0]", "log-injection"] diff --git a/unified/ql/lib/ext/swift-realmswift.model.yml b/unified/ql/lib/ext/swift-realmswift.model.yml new file mode 100644 index 000000000000..e1fa16f56f6e --- /dev/null +++ b/unified/ql/lib/ext/swift-realmswift.model.yml @@ -0,0 +1,13 @@ +extensions: + - addsTo: + pack: codeql/unified-all + extensible: sinkModel + data: + - ["RealmSwift.Realm.Configuration", "Member[encryptionKey]", "encryption-key"] + - ["RealmSwift.Realm.Configuration.Type", "Member[init].WithoutNamedArgument[seedFilePath].Argument[fileURL:]", "path-injection"] + - ["RealmSwift.Realm.Configuration.Type", "Member[init].WithoutNamedArgument[seedFilePath].Argument[encryptionKey:]", "encryption-key"] + - ["RealmSwift.Realm.Configuration.Type", "Member[init].WithNamedArgument[seedFilePath].Argument[fileURL:]", "path-injection"] + - ["RealmSwift.Realm.Configuration.Type", "Member[init].WithNamedArgument[seedFilePath].Argument[encryptionKey:]", "encryption-key"] + - ["RealmSwift.Realm.Configuration.Type", "Member[init].WithNamedArgument[seedFilePath].Argument[seedFilePath:]", "path-injection"] + - ["RealmSwift.Realm.Configuration", "Member[fileURL]", "path-injection"] + - ["RealmSwift.Realm.Configuration", "Member[seedFilePath]", "path-injection"] diff --git a/unified/ql/lib/ext/swift-security.model.yml b/unified/ql/lib/ext/swift-security.model.yml new file mode 100644 index 000000000000..aa1eb1eb1907 --- /dev/null +++ b/unified/ql/lib/ext/swift-security.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/unified-all + extensible: sourceModel + data: + - ["Security", "Member[SecKeyCopyExternalRepresentation].ReturnValue", "sensitive-password"] diff --git a/unified/ql/lib/ext/swift-sqlite.model.yml b/unified/ql/lib/ext/swift-sqlite.model.yml new file mode 100644 index 000000000000..800b3d68d1e8 --- /dev/null +++ b/unified/ql/lib/ext/swift-sqlite.model.yml @@ -0,0 +1,44 @@ +extensions: + - addsTo: + pack: codeql/unified-all + extensible: sinkModel + data: + - ["SQLite.Connection", "Member[key].Argument[0]", "encryption-key"] + - ["SQLite.Connection", "Member[keyAndMigrate].Argument[0]", "encryption-key"] + - ["SQLite.Connection", "Member[rekey].Argument[0]", "encryption-key"] + - ["SQLite.Connection", "Member[sqlcipher_export].Argument[key:]", "encryption-key"] + - ["SQLite.Connection", "Member[execute].Argument[0]", "database-store"] + - ["SQLite.Connection", "Member[prepare].Argument[0]", "database-store"] + - ["SQLite.Connection", "Member[prepare].Argument[1]", "database-store"] + - ["SQLite.Connection", "Member[run].Argument[0]", "database-store"] + - ["SQLite.Connection", "Member[run].Argument[1]", "database-store"] + - ["SQLite.Connection", "Member[scalar].Argument[0]", "database-store"] + - ["SQLite.Connection", "Member[scalar].Argument[1]", "database-store"] + - ["SQLite.Connection.Type", "Member[init].Argument[0]", "path-injection"] + - ["SQLite.Connection.Location.Type", "Member[uri].Argument[0]", "path-injection"] + - ["SQLite.QueryType", "Member[insert].Argument[0]", "database-store"] + - ["SQLite.QueryType", "Member[update].Argument[0]", "database-store"] + - ["SQLite.QueryType", "Member[insert].Argument[0,1]", "database-store"] + - ["SQLite.QueryType", "Member[insert].WithNamedArgument[or].Argument[0]", "database-store"] + - ["SQLite.QueryType", "Member[insertMany].Argument[0]", "database-store"] + - ["SQLite.QueryType", "Member[insertMany].WithNamedArgument[or].Argument[0]", "database-store"] + - ["SQLite.QueryType", "Member[update].Argument[0,1]", "database-store"] + - ["SQLite.QueryType", "Member[update].WithNamedArgument[or].Argument[0]", "database-store"] + - ["SQLite.QueryType", "Member[upsert].WithoutNamedArgument[setValues].Argument[0]", "database-store"] + - ["SQLite.QueryType", "Member[upsert].WithNamedArgument[setValues].Argument[0]", "database-store"] + - ["SQLite.QueryType", "Member[upsert].WithNamedArgument[setValues].Argument[setValues:]", "database-store"] + - ["SQLite.Statement.Type", "Member[init].Argument[1]", "database-store"] + - ["SQLite.Statement", "Member[scalar].Argument[0]", "database-store"] + - ["SQLite.Statement", "Member[bind].Argument[0]", "database-store"] + - ["SQLite.Statement", "Member[run].Argument[0]", "database-store"] + - addsTo: + pack: codeql/unified-all + extensible: summaryModel + data: + - ["SQLite", "Member[<-]", "Argument[0,1]", "ReturnValue", "taint"] + - ["SQLite.Blob.Type", "Member[init].WithoutNamedArgument[length]", "Argument[bytes:]", "ReturnValue", "taint"] + - ["SQLite.Blob.Type", "Member[init].WithNamedArgument[length]", "Argument[bytes:]", "ReturnValue", "taint"] + - ["SQLite.Expression.Type", "Member[init]", "Argument[0]", "ReturnValue", "taint"] + - ["SQLite.Expression.Type", "Member[init]", "Argument[1].CollectionElement", "ReturnValue", "taint"] + - ["SQLite.ExpressionType.Type", "Member[init]", "Argument[0]", "ReturnValue", "taint"] + - ["SQLite.ExpressionType", "Member[replace]", "Argument[with:]", "ReturnValue", "taint"] diff --git a/unified/ql/lib/ext/swift-sqlite3.model.yml b/unified/ql/lib/ext/swift-sqlite3.model.yml new file mode 100644 index 000000000000..2f0d4901c117 --- /dev/null +++ b/unified/ql/lib/ext/swift-sqlite3.model.yml @@ -0,0 +1,34 @@ +extensions: + - addsTo: + pack: codeql/unified-all + extensible: sinkModel + data: + - ["SQLite3", "Member[sqlite3_key].Argument[1]", "encryption-key"] + - ["SQLite3", "Member[sqlite3_key_v2].Argument[2]", "encryption-key"] + - ["SQLite3", "Member[sqlite3_rekey].Argument[1]", "encryption-key"] + - ["SQLite3", "Member[sqlite3_rekey_v2].Argument[2]", "encryption-key"] + - ["SQLite3", "Member[sqlite3_bind_blob].Argument[2]", "database-store"] + - ["SQLite3", "Member[sqlite3_bind_blob64].Argument[2]", "database-store"] + - ["SQLite3", "Member[sqlite3_bind_double].Argument[2]", "database-store"] + - ["SQLite3", "Member[sqlite3_bind_int].Argument[2]", "database-store"] + - ["SQLite3", "Member[sqlite3_bind_int64].Argument[2]", "database-store"] + - ["SQLite3", "Member[sqlite3_bind_pointer].Argument[2]", "database-store"] + - ["SQLite3", "Member[sqlite3_bind_text].Argument[2]", "database-store"] + - ["SQLite3", "Member[sqlite3_bind_text16].Argument[2]", "database-store"] + - ["SQLite3", "Member[sqlite3_bind_text64].Argument[2]", "database-store"] + - ["SQLite3", "Member[sqlite3_bind_value].Argument[2]", "database-store"] + - ["SQLite3", "Member[sqlite3_exec].Argument[1]", "database-store"] + - ["SQLite3", "Member[sqlite3_prepare].Argument[1]", "database-store"] + - ["SQLite3", "Member[sqlite3_prepare16].Argument[1]", "database-store"] + - ["SQLite3", "Member[sqlite3_prepare16_v2].Argument[1]", "database-store"] + - ["SQLite3", "Member[sqlite3_prepare16_v3].Argument[1]", "database-store"] + - ["SQLite3", "Member[sqlite3_prepare_v2].Argument[1]", "database-store"] + - ["SQLite3", "Member[sqlite3_prepare_v3].Argument[1]", "database-store"] + - ["SQLite3", "Member[sqlite3_database_file_object].Argument[0]", "path-injection"] + - ["SQLite3", "Member[sqlite3_filename_database].Argument[0]", "path-injection"] + - ["SQLite3", "Member[sqlite3_filename_journal].Argument[0]", "path-injection"] + - ["SQLite3", "Member[sqlite3_filename_wal].Argument[0]", "path-injection"] + - ["SQLite3", "Member[sqlite3_free_filename].Argument[0]", "path-injection"] + - ["SQLite3", "Member[sqlite3_open].Argument[0]", "path-injection"] + - ["SQLite3", "Member[sqlite3_open16].Argument[0]", "path-injection"] + - ["SQLite3", "Member[sqlite3_open_v2].Argument[0]", "path-injection"] diff --git a/unified/ql/lib/ext/swift-stringprocessing.model.yml b/unified/ql/lib/ext/swift-stringprocessing.model.yml new file mode 100644 index 000000000000..0985f4e2a1d5 --- /dev/null +++ b/unified/ql/lib/ext/swift-stringprocessing.model.yml @@ -0,0 +1,7 @@ +extensions: + - addsTo: + pack: codeql/unified-all + extensible: sinkModel + data: + - ["_StringProcessing.Regex.Type", "Member[init].Argument[0]", "regex-use"] + - ["_StringProcessing.Regex.Type", "Member[init].WithNamedArgument[as].Argument[0]", "regex-use"] diff --git a/unified/ql/lib/ext/swift-swift.model.yml b/unified/ql/lib/ext/swift-swift.model.yml new file mode 100644 index 000000000000..47d37fa53e71 --- /dev/null +++ b/unified/ql/lib/ext/swift-swift.model.yml @@ -0,0 +1,555 @@ +extensions: + - addsTo: + pack: codeql/unified-all + extensible: sourceModel + data: + - ["Swift.String", "Member[count]", "string-length"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[contentsOf].WithoutNamedArgument[encoding].WithoutNamedArgument[usedEncoding].ReturnValue", "remote"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[contentsOfFile].WithoutNamedArgument[encoding].WithoutNamedArgument[usedEncoding].ReturnValue", "local"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[contentsOf].WithNamedArgument[encoding].ReturnValue", "remote"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[contentsOfFile].WithNamedArgument[encoding].ReturnValue", "local"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[contentsOf].WithNamedArgument[usedEncoding].ReturnValue", "remote"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[contentsOfFile].WithNamedArgument[usedEncoding].ReturnValue", "local"] + - addsTo: + pack: codeql/unified-all + extensible: sinkModel + data: + - ["Swift.String", "Member[index].WithoutNamedArgument[limitBy].Argument[0,offsetBy:]", "string-length"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[contentsOfFile].WithoutNamedArgument[encoding].WithoutNamedArgument[usedEncoding].Argument[contentsOfFile:]", "path-injection"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[contentsOfFile].WithNamedArgument[encoding].Argument[contentsOfFile:]", "path-injection"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[contentsOfFile].WithNamedArgument[usedEncoding].Argument[contentsOfFile:]", "path-injection"] + - ["Swift.String", "Member[index].WithNamedArgument[limitBy].Argument[0,offsetBy:]", "string-length"] + - ["Swift.String", "Member[md5].Argument[self]", "weak-hash-input-MD5"] + - ["Swift.String", "Member[sha1].Argument[self]", "weak-hash-input-SHA1"] + - ["Swift.String", "Member[sha2].Argument[self]", "weak-password-hash-input-SHA2"] + - ["Swift.String", "Member[sha224].Argument[self]", "weak-password-hash-input-SHA224"] + - ["Swift.String", "Member[sha256].Argument[self]", "weak-password-hash-input-SHA256"] + - ["Swift.String", "Member[sha3].Argument[self]", "weak-password-hash-input-SHA3"] + - ["Swift.String", "Member[sha384].Argument[self]", "weak-password-hash-input-SHA384"] + - ["Swift.String", "Member[sha512].Argument[self]", "weak-password-hash-input-SHA512"] + - ["Swift.Array", "Member[md5].Argument[self]", "weak-hash-input-MD5"] + - ["Swift.Array", "Member[sha1].Argument[self]", "weak-hash-input-SHA1"] + - ["Swift.Array", "Member[sha2].Argument[self]", "weak-password-hash-input-SHA2"] + - ["Swift.Array", "Member[sha224].Argument[self]", "weak-password-hash-input-SHA224"] + - ["Swift.Array", "Member[sha256].Argument[self]", "weak-password-hash-input-SHA256"] + - ["Swift.Array", "Member[sha3].Argument[self]", "weak-password-hash-input-SHA3"] + - ["Swift.Array", "Member[sha384].Argument[self]", "weak-password-hash-input-SHA384"] + - ["Swift.Array", "Member[sha512].Argument[self]", "weak-password-hash-input-SHA512"] + - ["Swift.String.Index.Type", "Member[init].Argument[encodedOffset:]", "string-length"] + - ["Swift", "Member[assert].Argument[1]", "log-injection"] + - ["Swift", "Member[precondition].Argument[1]", "log-injection"] + - ["Swift", "Member[assertionFailure].Argument[0]", "log-injection"] + - ["Swift", "Member[preconditionFailure].Argument[0]", "log-injection"] + - ["Swift", "Member[fatalError].Argument[0]", "log-injection"] + - ["Swift", "Member[dump].WithoutNamedArgument[to].Argument[0,name:]", "log-injection"] + - ["Swift", "Member[print].WithoutNamedArgument[to].WithoutNamedArgument[toStream].Argument[0,separator:,terminator:]", "log-injection"] + - ["Swift", "Member[debugPrint].WithoutNamedArgument[to].Argument[0,separator:,terminator:]", "log-injection"] + - ["Swift", "Member[print].WithNamedArgument[toStream].Argument[0,separator:,terminator:]", "log-injection"] + - addsTo: + pack: codeql/unified-all + extensible: summaryModel + data: + - ["Swift.UnsafeMutableRawPointer.Type", "Member[init]", "Argument[0].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.UnsafeMutableRawPointer.Type", "Member[init]", "Argument[0].OptionalSome.CollectionElement", "ReturnValue.OptionalSome.CollectionElement", "value"] + - ["Swift.UnsafeMutableRawPointer.Type", "Member[init].WithNamedArgument[mutating]", "Argument[mutating:].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.UnsafeMutableRawPointer.Type", "Member[init].WithNamedArgument[mutating]", "Argument[mutating:].OptionalSome.CollectionElement", "ReturnValue.OptionalSome.CollectionElement", "value"] + - ["Swift.UnsafeMutableRawPointer", "Member[storeBytes]", "Argument[of:]", "Argument[self].CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawPointer", "Member[withMemoryRebound]", "Argument[self].CollectionElement", "Argument[2].Parameter[0].CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawPointer", "Member[withMemoryRebound]", "Argument[2].ReturnValue", "ReturnValue", "value"] + - ["Swift.UnsafeMutableRawPointer", "Member[withMemoryRebound]", "Argument[2].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawPointer", "Member[loadUnaligned]", "Argument[self].CollectionElement", "ReturnValue", "taint"] + - ["Swift.UnsafeMutableRawPointer", "Member[load]", "Argument[self].CollectionElement", "ReturnValue", "taint"] + - ["Swift.UnsafeMutableRawPointer", "Member[assumingMemoryBound]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawPointer", "Member[bindMemory]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawPointer", "Member[alignedDown].WithNamedArgument[toMultipleOf]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawPointer", "Member[alignedUp].WithNamedArgument[toMultipleOf]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawPointer", "Member[alignedDown].WithNamedArgument[for]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawPointer", "Member[alignedUp].WithNamedArgument[for]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawPointer", "Member[moveInitializeMemory]", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawPointer", "Member[moveInitializeMemory]", "Argument[from:].CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawPointer", "Member[initializeMemory].WithNamedArgument[count].WithNamedArgument[from]", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawPointer", "Member[initializeMemory].WithNamedArgument[count].WithNamedArgument[from]", "Argument[from:].CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawPointer", "Member[initializeMemory].WithNamedArgument[repeating]", "Argument[repeating:]", "Argument[self].CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawPointer", "Member[initializeMemory].WithNamedArgument[repeating]", "Argument[repeating:]", "ReturnValue.CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawPointer", "Member[initializeMemory].WithNamedArgument[to].WithoutNamedArgument[at]", "Argument[to:]", "Argument[self].CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawPointer", "Member[initializeMemory].WithNamedArgument[to].WithoutNamedArgument[at]", "Argument[to:]", "ReturnValue.CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawPointer", "Member[initializeMemory].WithNamedArgument[from].WithoutNamedArgument[count]", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawPointer", "Member[initializeMemory].WithNamedArgument[from].WithoutNamedArgument[count]", "Argument[from:].CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawPointer", "Member[copyBytes]", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawPointer", "Member[copyMemory]", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawPointer", "Member[initializeMemory].WithNamedArgument[at]", "Argument[to:]", "Argument[self].CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawPointer", "Member[initializeMemory].WithNamedArgument[at]", "Argument[to:]", "ReturnValue.CollectionElement", "taint"] + - ["Swift.UnsignedInteger.Type", "Member[init].WithNamedArgument[exactly]", "Argument[exactly:]", "ReturnValue.OptionalSome", "value"] + - ["Swift.UnsignedInteger.Type", "Member[init]", "Argument[0]", "ReturnValue", "taint"] + - ["Swift.FixedWidthInteger.Type", "Member[init].WithNamedArgument[littleEndian]", "Argument[littleEndian:]", "ReturnValue", "taint"] + - ["Swift.FixedWidthInteger.Type", "Member[init].WithNamedArgument[bigEndian]", "Argument[bigEndian:]", "ReturnValue", "taint"] + - ["Swift.FixedWidthInteger", "Member[dividingFullWidth]", "Argument[self]", "ReturnValue.TupleElement[0,1]", "taint"] + - ["Swift.FixedWidthInteger", "Member[dividingFullWidth]", "Argument[1].TupleElement[0,1]", "ReturnValue.TupleElement[0,1]", "taint"] + - ["Swift.FixedWidthInteger", "Member[multipliedFullWidth]", "Argument[self,by:]", "ReturnValue.TupleElement[0,1]", "taint"] + - ["Swift.FixedWidthInteger.Type", "Member[init]", "Argument[0]", "ReturnValue", "taint"] + - ["Swift.FixedWidthInteger", "Member[remainderReportingOverflow]", "Argument[self,dividingBy:]", "ReturnValue.TupleElement[0]", "taint"] + - ["Swift.FixedWidthInteger", "Member[dividedReportingOverflow]", "Argument[self,by:]", "ReturnValue.TupleElement[0]", "taint"] + - ["Swift.FixedWidthInteger", "Member[multipliedReportingOverflow]", "Argument[self,by:]", "ReturnValue.TupleElement[0]", "taint"] + - ["Swift.FixedWidthInteger", "Member[subtractingReportingOverflow]", "Argument[self,0]", "ReturnValue.TupleElement[0]", "taint"] + - ["Swift.FixedWidthInteger", "Member[addingReportingOverflow]", "Argument[self,0]", "ReturnValue.TupleElement[0]", "taint"] + - ["Swift.FixedWidthInteger.Type", "Member[init].WithNamedArgument[bitPattern]", "Argument[bitPattern:]", "ReturnValue", "taint"] + - ["Swift.FixedWidthInteger.Type", "Member[init].WithNamedArgument[clamping]", "Argument[clamping:]", "ReturnValue", "taint"] + - ["Swift.FixedWidthInteger.Type", "Member[init].WithNamedArgument[truncatingIfNeeded]", "Argument[truncatingIfNeeded:]", "ReturnValue", "taint"] + - ["Swift.FixedWidthInteger.Type", "Member[init].WithNamedArgument[radix]", "Argument[0]", "ReturnValue.OptionalSome", "taint"] + - ["Swift.FixedWidthInteger.Type", "Member[init].WithNamedArgument[truncating]", "Argument[truncating:]", "ReturnValue", "taint"] + - ["Swift.Numeric.Type", "Member[init].WithNamedArgument[exactly]", "Argument[exactly:]", "ReturnValue.OptionalSome", "value"] + - ["Swift.Numeric.Type", "Member[init].WithNamedArgument[bitPattern]", "Argument[bitPattern:]", "ReturnValue", "taint"] + - ["Swift.Numeric.Type", "Member[init].WithNamedArgument[truncating]", "Argument[truncating:]", "ReturnValue", "taint"] + - ["Swift.BinaryInteger", "Member[quotientAndRemainder]", "Argument[self,dividingBy:]", "ReturnValue.TupleElement[0,1]", "taint"] + - ["Swift.BinaryInteger.Type", "Member[init]", "Argument[0]", "ReturnValue", "taint"] + - ["Swift.BinaryInteger.Type", "Member[init].WithNamedArgument[clamping]", "Argument[clamping:]", "ReturnValue", "taint"] + - ["Swift.BinaryInteger.Type", "Member[init].WithNamedArgument[truncatingIfNeeded]", "Argument[truncatingIfNeeded:]", "ReturnValue", "taint"] + - ["Swift.BinaryInteger", "Member[advanced]", "Argument[self,by:]", "ReturnValue", "taint"] + - ["Swift.BinaryInteger", "Member[distance]", "Argument[self,to:]", "ReturnValue", "taint"] + - ["Swift.BinaryInteger", "Member[formatted]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.BinaryInteger.Type", "Member[init].WithNamedArgument[format]", "Argument[0]", "ReturnValue", "taint"] + - ["Swift.BinaryInteger.Type", "Member[init].WithNamedArgument[strategy]", "Argument[0]", "ReturnValue", "taint"] + - ["Swift.Sequence", "Member[withContiguousStorageIfAvailable]", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint"] + - ["Swift.Sequence", "Member[withContiguousStorageIfAvailable]", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "value"] + - ["Swift.Sequence", "Member[withContiguousStorageIfAvailable]", "Argument[0].ReturnValue", "ReturnValue.OptionalSome", "value"] + - ["Swift.Sequence", "Member[makeIterator]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Sequence", "Member[suffix]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Sequence", "Member[suffix]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Sequence", "Member[dropLast]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Sequence", "Member[dropLast]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Sequence", "Member[split].WithNamedArgument[whereSeparator]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Sequence", "Member[split].WithNamedArgument[whereSeparator]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Sequence", "Member[prefix].WithNamedArgument[while]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Sequence", "Member[prefix].WithNamedArgument[while]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Sequence", "Member[prefix]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Sequence", "Member[prefix]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Sequence", "Member[drop]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Sequence", "Member[drop]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Sequence", "Member[dropFirst]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Sequence", "Member[dropFirst]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Sequence", "Member[split].WithNamedArgument[separator]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Sequence", "Member[split].WithNamedArgument[separator]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Sequence", "Member[shuffled]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Sequence", "Member[shuffled]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Sequence", "Member[shuffled].WithNamedArgument[using]", "Argument[self].CollectionElement", "ReturnValue", "taint"] + - ["Swift.Sequence", "Member[shuffled].WithNamedArgument[using]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Sequence", "Member[forEach]", "Argument[self].CollectionElement", "Argument[0].Parameter[0]", "value"] + - ["Swift.Sequence", "Member[joined]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Sequence", "Member[joined]", "Argument[self].CollectionElement", "ReturnValue", "taint"] + - ["Swift.Sequence", "Member[joined]", "Argument[self].CollectionElement.CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Sequence", "Member[joined].WithNamedArgument[separator]", "Argument[self].CollectionElement", "ReturnValue", "taint"] + - ["Swift.Sequence", "Member[joined].WithNamedArgument[separator]", "Argument[self].CollectionElement.CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Sequence", "Member[joined].WithNamedArgument[separator]", "Argument[separator:,self]", "ReturnValue", "taint"] + - ["Swift.Sequence", "Member[reversed]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Sequence", "Member[reversed]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Sequence", "Member[first]", "Argument[self].CollectionElement", "ReturnValue", "value"] + - ["Swift.Sequence", "Member[enumerated]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement.TupleElement[1]", "value"] + - ["Swift.Sequence", "Member[max].WithNamedArgument[by]", "Argument[self].CollectionElement", "ReturnValue.OptionalSome", "taint"] + - ["Swift.Sequence", "Member[min].WithNamedArgument[by]", "Argument[self].CollectionElement", "ReturnValue.OptionalSome", "taint"] + - ["Swift.Sequence", "Member[max]", "Argument[self].CollectionElement", "ReturnValue.OptionalSome", "taint"] + - ["Swift.Sequence", "Member[min]", "Argument[self].CollectionElement", "ReturnValue.OptionalSome", "taint"] + - ["Swift.Sequence", "Member[sorted]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Sequence", "Member[sorted]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Sequence", "Member[sorted].WithNamedArgument[by]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Sequence", "Member[sorted].WithNamedArgument[by]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Sequence", "Member[formatted]", "Argument[self].CollectionElement", "ReturnValue", "taint"] + - ["Swift.UnsafeBufferPointer.Type", "Member[init]", "Argument[0].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.UnsafeBufferPointer.Type", "Member[init].WithNamedArgument[count]", "Argument[start:].OptionalSome.CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.UnsafeBufferPointer", "Member[withMemoryRebound]", "Argument[self].CollectionElement", "Argument[1].Parameter[0].CollectionElement", "taint"] + - ["Swift.UnsafeBufferPointer", "Member[withMemoryRebound]", "Argument[1].ReturnValue", "ReturnValue", "value"] + - ["Swift.UnsafeBufferPointer.Type", "Member[init].WithNamedArgument[rebasing]", "Argument[rebasing:].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.UnsafePointer", "Member[withMemoryRebound]", "Argument[self].CollectionElement", "Argument[2].Parameter[0].CollectionElement", "taint"] + - ["Swift.UnsafePointer", "Member[withMemoryRebound]", "Argument[2].ReturnValue", "ReturnValue", "value"] + - ["Swift.UnsafeMutablePointer.Type", "Member[init]", "Argument[0].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.UnsafeMutablePointer.Type", "Member[init]", "Argument[0].OptionalSome.CollectionElement", "ReturnValue.OptionalSome.CollectionElement", "value"] + - ["Swift.UnsafeMutablePointer.Type", "Member[init].WithNamedArgument[mutating]", "Argument[mutating:].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.UnsafeMutablePointer.Type", "Member[init].WithNamedArgument[mutating]", "Argument[mutating:].OptionalSome.CollectionElement", "ReturnValue.OptionalSome.CollectionElement", "value"] + - ["Swift.UnsafeMutablePointer", "Member[withMemoryRebound]", "Argument[self].CollectionElement", "Argument[2].Parameter[0].CollectionElement", "taint"] + - ["Swift.UnsafeMutablePointer", "Member[withMemoryRebound]", "Argument[2].ReturnValue", "ReturnValue", "value"] + - ["Swift.UnsafeMutablePointer", "Member[withMemoryRebound]", "Argument[2].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "taint"] + - ["Swift.UnsafeMutablePointer", "Member[initialize].WithNamedArgument[repeating]", "Argument[repeating:]", "Argument[self].CollectionElement", "value"] + - ["Swift.UnsafeMutablePointer", "Member[initialize].WithNamedArgument[to].WithoutNamedArgument[count]", "Argument[to:]", "Argument[self].CollectionElement", "value"] + - ["Swift.UnsafeMutablePointer", "Member[move]", "Argument[self].CollectionElement", "ReturnValue", "value"] + - ["Swift.UnsafeMutablePointer", "Member[assign].WithNamedArgument[repeating]", "Argument[repeating:]", "Argument[self].CollectionElement", "value"] + - ["Swift.UnsafeMutablePointer", "Member[update].WithNamedArgument[repeating]", "Argument[repeating:]", "Argument[self].CollectionElement", "value"] + - ["Swift.UnsafeMutablePointer", "Member[assign].WithNamedArgument[from]", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value"] + - ["Swift.UnsafeMutablePointer", "Member[update].WithNamedArgument[from]", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value"] + - ["Swift.UnsafeMutablePointer", "Member[moveInitialize]", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value"] + - ["Swift.UnsafeMutablePointer", "Member[initialize].WithNamedArgument[count].WithNamedArgument[from]", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value"] + - ["Swift.UnsafeMutablePointer", "Member[moveUpdate]", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value"] + - ["Swift.UnsafeMutablePointer", "Member[moveAssign]", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value"] + - ["Swift.UnsafeMutablePointer", "Member[initialize].WithNamedArgument[from].WithoutNamedArgument[count]", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value"] + - ["Swift.UnsafeMutablePointer", "Member[initialize].WithNamedArgument[count].WithNamedArgument[to]", "Argument[to:]", "Argument[self].CollectionElement", "value"] + - ["Swift.UnsafeMutableBufferPointer.Type", "Member[init].WithNamedArgument[count]", "Argument[start:].OptionalSome.CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.UnsafeMutableBufferPointer.Type", "Member[init].WithNamedArgument[mutating]", "Argument[mutating:].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.UnsafeMutableBufferPointer", "Member[update].WithNamedArgument[repeating]", "Argument[repeating:]", "Argument[self].CollectionElement", "value"] + - ["Swift.UnsafeMutableBufferPointer", "Member[withMemoryRebound]", "Argument[self].CollectionElement", "Argument[1].Parameter[0].CollectionElement", "taint"] + - ["Swift.UnsafeMutableBufferPointer", "Member[withMemoryRebound]", "Argument[1].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "taint"] + - ["Swift.UnsafeMutableBufferPointer", "Member[withMemoryRebound]", "Argument[1].ReturnValue", "ReturnValue", "value"] + - ["Swift.UnsafeMutableBufferPointer", "Member[moveElement]", "Argument[self].CollectionElement", "ReturnValue", "value"] + - ["Swift.UnsafeMutableBufferPointer", "Member[initializeElement]", "Argument[to:]", "Argument[self].CollectionElement", "value"] + - ["Swift.UnsafeMutableBufferPointer", "Member[moveUpdate]", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "value"] + - ["Swift.UnsafeMutableBufferPointer", "Member[moveInitialize]", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "value"] + - ["Swift.UnsafeMutableBufferPointer", "Member[update].WithNamedArgument[fromContentsOf]", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "value"] + - ["Swift.UnsafeMutableBufferPointer", "Member[update].WithNamedArgument[from]", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint"] + - ["Swift.UnsafeMutableBufferPointer", "Member[update].WithNamedArgument[from]", "Argument[from:].CollectionElement", "ReturnValue.TupleElement[0].CollectionElement", "taint"] + - ["Swift.UnsafeMutableBufferPointer", "Member[initialize].WithNamedArgument[fromContentsOf]", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "value"] + - ["Swift.UnsafeMutableBufferPointer", "Member[initialize].WithNamedArgument[from]", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint"] + - ["Swift.UnsafeMutableBufferPointer", "Member[initialize].WithNamedArgument[from]", "Argument[from:].CollectionElement", "ReturnValue.TupleElement[0].CollectionElement", "taint"] + - ["Swift.UnsafeMutableBufferPointer", "Member[initialize].WithNamedArgument[repeating]", "Argument[repeating:]", "Argument[self].CollectionElement", "value"] + - ["Swift.UnsafeMutableBufferPointer.Type", "Member[init].WithNamedArgument[rebasing]", "Argument[rebasing:].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.UnsafeMutableBufferPointer", "Member[assign]", "Argument[repeating:]", "Argument[self].CollectionElement", "value"] + - ["Swift.ContiguousArray", "Member[withUnsafeMutableBufferPointer]", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint"] + - ["Swift.ContiguousArray", "Member[withUnsafeMutableBufferPointer]", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "value"] + - ["Swift.ContiguousArray", "Member[withUnsafeMutableBufferPointer]", "Argument[0].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "value"] + - ["Swift.ContiguousArray", "Member[withUnsafeMutableBufferPointer]", "Argument[0].ReturnValue", "ReturnValue", "value"] + - ["Swift.ContiguousArray", "Member[withUnsafeBufferPointer]", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint"] + - ["Swift.ContiguousArray", "Member[withUnsafeBufferPointer]", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "value"] + - ["Swift.ContiguousArray", "Member[withUnsafeBufferPointer]", "Argument[0].ReturnValue", "ReturnValue", "value"] + - ["Swift.ContiguousArray", "Member[withUnsafeMutableBytes]", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint"] + - ["Swift.ContiguousArray", "Member[withUnsafeMutableBytes]", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "taint"] + - ["Swift.ContiguousArray", "Member[withUnsafeMutableBytes]", "Argument[0].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "taint"] + - ["Swift.ContiguousArray", "Member[withUnsafeMutableBytes]", "Argument[0].ReturnValue", "ReturnValue", "value"] + - ["Swift.Collection", "Member[makeIterator]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Collection", "Member[removeFirst]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Collection", "Member[suffix]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Collection", "Member[suffix]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Collection", "Member[dropLast]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Collection", "Member[dropLast]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Collection", "Member[randomElement]", "Argument[self].CollectionElement", "ReturnValue.OptionalSome", "value"] + - ["Swift.Collection", "Member[randomElement].WithNamedArgument[using]", "Argument[self].CollectionElement", "ReturnValue.OptionalSome", "value"] + - ["Swift.Collection", "Member[popFirst]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Collection", "Member[split].WithNamedArgument[whereSeparator]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Collection", "Member[prefix].WithNamedArgument[through]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Collection", "Member[prefix].WithNamedArgument[through]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Collection", "Member[suffix].WithNamedArgument[from]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Collection", "Member[prefix].WithNamedArgument[upTo]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Collection", "Member[prefix].WithNamedArgument[upTo]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Collection", "Member[prefix].WithNamedArgument[while]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Collection", "Member[prefix].WithNamedArgument[while]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Collection", "Member[prefix]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Collection", "Member[prefix]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Collection", "Member[dropFirst]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Collection", "Member[dropFirst]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Collection", "Member[split].WithNamedArgument[separator]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Collection", "Member[flatMap]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Collection", "Member[flatMap]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Collection", "Member[trimmingPrefix].WithNamedArgument[while]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Collection", "Member[trimmingPrefix].WithNamedArgument[while]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Collection", "Member[trimmingPrefix]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Collection", "Member[trimmingPrefix]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.UnsafeRawPointer.Type", "Member[init]", "Argument[0].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.UnsafeRawPointer.Type", "Member[init]", "Argument[0].OptionalSome.CollectionElement", "ReturnValue.OptionalSome.CollectionElement", "value"] + - ["Swift.UnsafeRawPointer", "Member[withMemoryRebound]", "Argument[self].CollectionElement", "Argument[2].Parameter[0].CollectionElement", "taint"] + - ["Swift.UnsafeRawPointer", "Member[withMemoryRebound]", "Argument[2].ReturnValue", "ReturnValue", "value"] + - ["Swift.UnsafeRawPointer", "Member[loadUnaligned]", "Argument[self].CollectionElement", "ReturnValue", "taint"] + - ["Swift.UnsafeRawPointer", "Member[load]", "Argument[self].CollectionElement", "ReturnValue", "taint"] + - ["Swift.UnsafeRawPointer", "Member[assumingMemoryBound]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.UnsafeRawPointer", "Member[bindMemory]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.UnsafeRawPointer", "Member[alignedDown].WithNamedArgument[toMultipleOf]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.UnsafeRawPointer", "Member[alignedUp].WithNamedArgument[toMultipleOf]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.UnsafeRawPointer", "Member[alignedDown].WithNamedArgument[for]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.UnsafeRawPointer", "Member[alignedUp].WithNamedArgument[for]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.Slice.Type", "Member[init]", "Argument[base:].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Slice", "Member[remove]", "Argument[self].CollectionElement", "ReturnValue", "value"] + - ["Swift.Slice", "Member[insert].WithoutNamedArgument[contentsOf]", "Argument[0]", "Argument[self].CollectionElement", "value"] + - ["Swift.Slice", "Member[insert].WithNamedArgument[contentsOf]", "Argument[contentsOf:].CollectionElement", "Argument[self].CollectionElement", "value"] + - ["Swift.Slice", "Member[replaceSubrange]", "Argument[with:].CollectionElement", "Argument[self].CollectionElement", "value"] + - ["Swift.Slice", "Member[storeBytes]", "Argument[of:]", "Argument[self].CollectionElement", "taint"] + - ["Swift.Slice", "Member[update].WithNamedArgument[repeating]", "Argument[repeating:]", "Argument[self].CollectionElement", "value"] + - ["Swift.Slice", "Member[loadUnaligned]", "Argument[self].CollectionElement", "ReturnValue", "taint"] + - ["Swift.Slice", "Member[load]", "Argument[self].CollectionElement", "ReturnValue", "taint"] + - ["Swift.Slice", "Member[assumingMemoryBound]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.Slice", "Member[withMemoryRebound]", "Argument[self].CollectionElement", "Argument[1].Parameter[0].CollectionElement", "taint"] + - ["Swift.Slice", "Member[withMemoryRebound]", "Argument[1].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "taint"] + - ["Swift.Slice", "Member[withMemoryRebound]", "Argument[1].ReturnValue", "ReturnValue", "value"] + - ["Swift.Slice", "Member[bindMemory]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.Slice", "Member[moveInitializeMemory]", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "taint"] + - ["Swift.Slice", "Member[moveInitializeMemory]", "Argument[fromContentsOf:].CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.Slice", "Member[initializeMemory].WithNamedArgument[fromContentsOf]", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "taint"] + - ["Swift.Slice", "Member[initializeMemory].WithNamedArgument[fromContentsOf]", "Argument[fromContentsOf:].CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.Slice", "Member[initializeMemory].WithNamedArgument[from]", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint"] + - ["Swift.Slice", "Member[initializeMemory].WithNamedArgument[from]", "Argument[from:].CollectionElement", "ReturnValue.TupleElement[0,1].CollectionElement", "taint"] + - ["Swift.Slice", "Member[initializeMemory].WithNamedArgument[repeating]", "Argument[repeating:]", "Argument[self].CollectionElement", "taint"] + - ["Swift.Slice", "Member[initializeMemory].WithNamedArgument[repeating]", "Argument[repeating:]", "ReturnValue.CollectionElement", "taint"] + - ["Swift.Slice", "Member[copyBytes]", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint"] + - ["Swift.Slice", "Member[moveElement]", "Argument[self].CollectionElement", "ReturnValue", "value"] + - ["Swift.Slice", "Member[initializeElement]", "Argument[to:]", "Argument[self].CollectionElement", "value"] + - ["Swift.Slice", "Member[moveUpdate]", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "value"] + - ["Swift.Slice", "Member[moveInitialize]", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "value"] + - ["Swift.Slice", "Member[update].WithNamedArgument[fromContentsOf]", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "value"] + - ["Swift.Slice", "Member[update].WithNamedArgument[from]", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value"] + - ["Swift.Slice", "Member[update].WithNamedArgument[from]", "Argument[from:].CollectionElement", "ReturnValue.TupleElement[0].CollectionElement", "taint"] + - ["Swift.Slice", "Member[initialize].WithNamedArgument[fromContentsOf]", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "taint"] + - ["Swift.Slice", "Member[initialize].WithNamedArgument[from]", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint"] + - ["Swift.Slice", "Member[initialize].WithNamedArgument[from]", "Argument[from:].CollectionElement", "ReturnValue.TupleElement[0,1].CollectionElement", "taint"] + - ["Swift.Slice", "Member[initialize].WithNamedArgument[repeating]", "Argument[repeating:]", "Argument[self].CollectionElement", "value"] + - ["Swift.Slice", "Member[withContiguousMutableStorageIfAvailable]", "Argument[self].CollectionElement", "Argument[to:].Parameter[0].CollectionElement", "taint"] + - ["Swift.Slice", "Member[withContiguousMutableStorageIfAvailable]", "Argument[to:].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "taint"] + - ["Swift.Slice", "Member[withContiguousMutableStorageIfAvailable]", "Argument[to:].ReturnValue", "ReturnValue", "value"] + - ["Swift.SignedInteger.Type", "Member[init].WithNamedArgument[exactly]", "Argument[exactly:]", "ReturnValue.OptionalSome", "value"] + - ["Swift.SignedInteger.Type", "Member[init]", "Argument[0]", "ReturnValue", "taint"] + - ["Swift.BidirectionalCollection", "Member[popLast]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.BidirectionalCollection", "Member[suffix]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.BidirectionalCollection", "Member[suffix]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.BidirectionalCollection", "Member[dropLast]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.BidirectionalCollection", "Member[dropLast]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.BidirectionalCollection", "Member[suffix].WithNamedArgument[from]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.BidirectionalCollection", "Member[last]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.BidirectionalCollection", "Member[joined]", "Argument[self,separator:]", "ReturnValue", "taint"] + - ["Swift.BidirectionalCollection", "Member[joined]", "Argument[self].CollectionElement", "ReturnValue", "taint"] + - ["Swift.BidirectionalCollection", "Member[joined]", "Argument[self].CollectionElement.CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.BidirectionalCollection", "Member[reversed]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.BidirectionalCollection", "Member[reversed]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.String.Type", "Member[init]", "Argument[0]", "ReturnValue", "taint"] + - ["Swift.String.Type", "Member[init]", "Argument[0]", "ReturnValue.OptionalSome", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[repeating]", "Argument[repeating:]", "ReturnValue", "taint"] + - ["Swift.String", "Member[insert]", "Argument[contentsOf:]", "Argument[self]", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[extendedGraphemeClusterLiteral]", "Argument[extendedGraphemeClusterLiteral:]", "ReturnValue", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[unicodeScalarLiteral]", "Argument[unicodeScalarLiteral:]", "ReturnValue", "taint"] + - ["Swift.String", "Member[encode]", "Argument[self]", "Argument[to:]", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[from]", "Argument[from:]", "ReturnValue", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[from]", "Argument[from:]", "ReturnValue.OptionalSome", "taint"] + - ["Swift.String", "Member[randomElement]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.String", "Member[randomElement].WithNamedArgument[using]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.String", "Member[split]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[stringLiteral]", "Argument[stringLiteral:]", "ReturnValue", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[stringInterpolation]", "Argument[stringInterpolation:]", "ReturnValue", "taint"] + - ["Swift.String", "Member[decodeCString]", "Argument[0]", "ReturnValue.TupleElement[0]", "taint"] + - ["Swift.String", "Member[decodeCString]", "Argument[0].CollectionElement", "ReturnValue.TupleElement[0]", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[validatingUTF8]", "Argument[validatingUTF8:]", "ReturnValue.OptionalSome", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[validatingUTF8]", "Argument[validatingUTF8:].CollectionElement", "ReturnValue.OptionalSome", "taint"] + - ["Swift.String", "Member[enumerated]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.String", "Member[max].WithNamedArgument[by]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.String", "Member[min].WithNamedArgument[by]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.String", "Member[max]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.String", "Member[min]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.String", "Member[withUTF8]", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint"] + - ["Swift.String", "Member[withUTF8]", "Argument[0].Parameter[0].CollectionElement", "Argument[self]", "taint"] + - ["Swift.String", "Member[withUTF8]", "Argument[0].ReturnValue", "ReturnValue", "value"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[initializingUTF8With]", "Argument[initializingUTF8With:].Parameter[0].CollectionElement", "ReturnValue", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[radix]", "Argument[0]", "ReturnValue", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[validating]", "Argument[validating:]", "ReturnValue.OptionalSome", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[describing]", "Argument[describing:]", "ReturnValue", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[contentsOf].WithoutNamedArgument[encoding].WithoutNamedArgument[usedEncoding]", "Argument[contentsOf:]", "ReturnValue", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[contentsOfFile].WithoutNamedArgument[encoding].WithoutNamedArgument[usedEncoding]", "Argument[contentsOfFile:]", "ReturnValue", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[contentsOf].WithNamedArgument[encoding]", "Argument[contentsOf:]", "ReturnValue", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[contentsOfFile].WithNamedArgument[encoding]", "Argument[contentsOfFile:]", "ReturnValue", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[contentsOfFile].WithNamedArgument[usedEncoding]", "Argument[contentsOfFile:]", "ReturnValue", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[platformString]", "Argument[platformString:]", "ReturnValue", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[platformString]", "Argument[platformString:].CollectionElement", "ReturnValue", "taint"] + - ["Swift.String", "Member[withPlatformString]", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint"] + - ["Swift.String", "Member[withPlatformString]", "Argument[0].ReturnValue", "ReturnValue", "value"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[bytesNoCopy]", "Argument[bytesNoCopy:].CollectionElement", "ReturnValue.OptionalSome", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[cString]", "Argument[cString:]", "ReturnValue.OptionalSome", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[cString]", "Argument[cString:].CollectionElement", "ReturnValue.OptionalSome", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[data]", "Argument[data:]", "ReturnValue.OptionalSome", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[format].WithoutNamedArgument[arguments].WithoutNamedArgument[locale]", "Argument[format:]", "ReturnValue", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[format].WithoutNamedArgument[arguments].WithoutNamedArgument[locale]", "Argument[1].CollectionElement", "ReturnValue", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[arguments].WithoutNamedArgument[locale]", "Argument[format:]", "ReturnValue", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[arguments].WithoutNamedArgument[locale]", "Argument[arguments:].CollectionElement", "ReturnValue", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[locale].WithoutNamedArgument[arguments]", "Argument[format:]", "ReturnValue", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[locale].WithoutNamedArgument[arguments]", "Argument[2].CollectionElement", "ReturnValue", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[arguments].WithNamedArgument[locale]", "Argument[format:]", "ReturnValue", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[arguments].WithNamedArgument[locale]", "Argument[arguments:].CollectionElement", "ReturnValue", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[utf8String]", "Argument[utf8String:]", "ReturnValue.OptionalSome", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[utf8String]", "Argument[utf8String:].CollectionElement", "ReturnValue.OptionalSome", "taint"] + - ["Swift.String.Type", "Member[localizedStringWithFormat]", "Argument[0]", "ReturnValue", "taint"] + - ["Swift.String.Type", "Member[localizedStringWithFormat]", "Argument[1].CollectionElement", "ReturnValue", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[bytes]", "Argument[bytes:].CollectionElement", "ReturnValue.OptionalSome", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[contendsOf]", "Argument[contendsOf:]", "ReturnValue", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[decoding]", "Argument[decoding:]", "ReturnValue", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[utf16CodeUnits]", "Argument[utf16CodeUnits:].CollectionElement", "ReturnValue", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[utf16CodeUnitsNoCopy]", "Argument[utf16CodeUnitsNoCopy:].CollectionElement", "ReturnValue", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[validatingPlatformString]", "Argument[validatingPlatformString:]", "ReturnValue.OptionalSome", "taint"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[validatingPlatformString]", "Argument[validatingPlatformString:].CollectionElement", "ReturnValue.OptionalSome", "taint"] + - ["Swift.String", "Member[subscript]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.String", "Member[withMutableCharacters]", "Argument[self]", "Argument[0].Parameter[0]", "value"] + - ["Swift.String", "Member[withMutableCharacters]", "Argument[0].Parameter[0]", "Argument[self]", "value"] + - ["Swift.String", "Member[withMutableCharacters]", "Argument[0].Parameter[0].CollectionElement", "Argument[self]", "taint"] + - ["Swift.String", "Member[withMutableCharacters]", "Argument[0].ReturnValue", "ReturnValue", "value"] + - ["Swift.BinaryFloatingPoint.Type", "Member[init].WithNamedArgument[exponentBitPattern]", "Argument[sign:,exponentBitPattern:,significandBitPattern:]", "ReturnValue", "taint"] + - ["Swift.BinaryFloatingPoint", "Member[formatted]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.BinaryFloatingPoint.Type", "Member[init].WithNamedArgument[format]", "Argument[0]", "ReturnValue", "taint"] + - ["Swift.BinaryFloatingPoint.Type", "Member[init].WithNamedArgument[strategy]", "Argument[0]", "ReturnValue", "taint"] + - ["Swift.UnsafeRawBufferPointer.Type", "Member[init]", "Argument[0].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.UnsafeRawBufferPointer.Type", "Member[init].WithNamedArgument[count]", "Argument[start:].OptionalSome.CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.UnsafeRawBufferPointer", "Member[loadUnaligned]", "Argument[self].CollectionElement", "ReturnValue", "taint"] + - ["Swift.UnsafeRawBufferPointer", "Member[load]", "Argument[self].CollectionElement", "ReturnValue", "taint"] + - ["Swift.UnsafeRawBufferPointer", "Member[assumingMemoryBound]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.UnsafeRawBufferPointer", "Member[withMemoryRebound]", "Argument[self].CollectionElement", "Argument[1].Parameter[0].CollectionElement", "taint"] + - ["Swift.UnsafeRawBufferPointer", "Member[withMemoryRebound]", "Argument[1].ReturnValue", "ReturnValue", "value"] + - ["Swift.UnsafeRawBufferPointer", "Member[bindMemory]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.UnsafeRawBufferPointer.Type", "Member[init].WithNamedArgument[rebasing]", "Argument[rebasing:].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Array", "Member[withUnsafeMutableBufferPointer]", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint"] + - ["Swift.Array", "Member[withUnsafeMutableBufferPointer]", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "value"] + - ["Swift.Array", "Member[withUnsafeMutableBufferPointer]", "Argument[0].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "value"] + - ["Swift.Array", "Member[withUnsafeMutableBufferPointer]", "Argument[0].ReturnValue", "ReturnValue", "value"] + - ["Swift.Array", "Member[withUnsafeBufferPointer]", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint"] + - ["Swift.Array", "Member[withUnsafeBufferPointer]", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "value"] + - ["Swift.Array", "Member[withUnsafeBufferPointer]", "Argument[0].ReturnValue", "ReturnValue", "value"] + - ["Swift.Array", "Member[makeIterator]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Array", "Member[insert]", "Argument[0]", "Argument[self].CollectionElement", "value"] + - ["Swift.Array", "Member[insert]", "Argument[at:]", "Argument[self]", "taint"] + - ["Swift.Array.Type", "Member[init]", "Argument[arrayLiteral:].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Array", "Member[withUnsafeBytes]", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint"] + - ["Swift.Array", "Member[withUnsafeBytes]", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "taint"] + - ["Swift.Array", "Member[withUnsafeBytes]", "Argument[0].ReturnValue", "ReturnValue", "value"] + - ["Swift.Array", "Member[withUnsafeMutableBytes]", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint"] + - ["Swift.Array", "Member[withUnsafeMutableBytes]", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "taint"] + - ["Swift.Array", "Member[withUnsafeMutableBytes]", "Argument[0].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "taint"] + - ["Swift.Array", "Member[withUnsafeMutableBytes]", "Argument[0].ReturnValue", "ReturnValue", "value"] + - ["Swift.MutableCollection", "Member[withContiguousMutableStorageIfAvailable]", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint"] + - ["Swift.MutableCollection", "Member[withContiguousMutableStorageIfAvailable]", "Argument[self].CollectionElement", "Argument[0].Parameter[0].CollectionElement", "value"] + - ["Swift.MutableCollection", "Member[withContiguousMutableStorageIfAvailable]", "Argument[0].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "value"] + - ["Swift.MutableCollection", "Member[withContiguousMutableStorageIfAvailable]", "Argument[0].ReturnValue", "ReturnValue.OptionalSome", "value"] + - ["Swift.RangeReplaceableCollection.Type", "Member[init]", "Argument[0]", "ReturnValue.CollectionElement", "taint"] + - ["Swift.RangeReplaceableCollection.Type", "Member[init]", "Argument[0].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.RangeReplaceableCollection", "Member[append]", "Argument[0]", "Argument[self]", "taint"] + - ["Swift.RangeReplaceableCollection", "Member[remove]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.RangeReplaceableCollection", "Member[insert]", "Argument[0]", "Argument[self]", "taint"] + - ["Swift.RangeReplaceableCollection", "Member[append].WithNamedArgument[contentsOf]", "Argument[contentsOf:]", "Argument[self]", "taint"] + - ["Swift.RangeReplaceableCollection.Type", "Member[init].WithNamedArgument[count]", "Argument[repeating:]", "ReturnValue.CollectionElement", "value"] + - ["Swift.RangeReplaceableCollection", "Member[removeFirst]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.RangeReplaceableCollection", "Member[replaceSubrange]", "Argument[with:]", "Argument[self]", "taint"] + - ["Swift.RangeReplaceableCollection", "Member[replaceSubrange]", "Argument[with:].CollectionElement", "Argument[self].CollectionElement", "value"] + - ["Swift.RangeReplaceableCollection", "Member[removeLast]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.IteratorProtocol", "Member[next]", "Argument[self].CollectionElement", "ReturnValue.OptionalSome", "value"] + - ["Swift.UnsafeMutableRawBufferPointer.Type", "Member[init]", "Argument[0].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.UnsafeMutableRawBufferPointer.Type", "Member[init].WithNamedArgument[count]", "Argument[start:].OptionalSome.CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawBufferPointer.Type", "Member[init].WithNamedArgument[mutating]", "Argument[mutating:].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.UnsafeMutableRawBufferPointer", "Member[storeBytes]", "Argument[of:]", "Argument[self].CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawBufferPointer", "Member[loadUnaligned]", "Argument[self].CollectionElement", "ReturnValue", "taint"] + - ["Swift.UnsafeMutableRawBufferPointer", "Member[load]", "Argument[self].CollectionElement", "ReturnValue", "taint"] + - ["Swift.UnsafeMutableRawBufferPointer", "Member[assumingMemoryBound]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawBufferPointer", "Member[withMemoryRebound]", "Argument[self].CollectionElement", "Argument[1].Parameter[0].CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawBufferPointer", "Member[withMemoryRebound]", "Argument[1].Parameter[0].CollectionElement", "Argument[self].CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawBufferPointer", "Member[withMemoryRebound]", "Argument[1].ReturnValue", "ReturnValue", "value"] + - ["Swift.UnsafeMutableRawBufferPointer", "Member[bindMemory]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawBufferPointer", "Member[moveInitializeMemory]", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawBufferPointer", "Member[moveInitializeMemory]", "Argument[fromContentsOf:].CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawBufferPointer", "Member[initializeMemory].WithNamedArgument[fromContentsOf]", "Argument[fromContentsOf:].CollectionElement", "Argument[self].CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawBufferPointer", "Member[initializeMemory].WithNamedArgument[fromContentsOf]", "Argument[fromContentsOf:].CollectionElement", "ReturnValue.TupleElement[0,1].CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawBufferPointer", "Member[initializeMemory].WithNamedArgument[from]", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawBufferPointer", "Member[initializeMemory].WithNamedArgument[from]", "Argument[from:].CollectionElement", "ReturnValue.TupleElement[0,1].CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawBufferPointer", "Member[initializeMemory].WithNamedArgument[repeating]", "Argument[repeating:]", "Argument[self].CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawBufferPointer", "Member[initializeMemory].WithNamedArgument[repeating]", "Argument[repeating:]", "ReturnValue.TupleElement[0,1].CollectionElement", "taint"] + - ["Swift.UnsafeMutableRawBufferPointer", "Member[copyBytes]", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value"] + - ["Swift.UnsafeMutableRawBufferPointer.Type", "Member[init].WithNamedArgument[rebasing]", "Argument[rebasing:].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.UnsafeMutableRawBufferPointer", "Member[copyMemory]", "Argument[from:].CollectionElement", "Argument[self].CollectionElement", "value"] + - ["Swift.LosslessStringConvertible.Type", "Member[init]", "Argument[0]", "ReturnValue", "taint"] + - ["Swift.RawRepresentable.Type", "Member[init]", "Argument[rawValue:]", "ReturnValue", "taint"] + - ["Swift.Dictionary", "Member[makeIterator]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Dictionary", "Member[updateValue]", "Argument[0]", "Argument[self].CollectionElement.TupleElement[1]", "value"] + - ["Swift.Dictionary", "Member[updateValue]", "Argument[forKey:]", "Argument[self].CollectionElement.TupleElement[0]", "value"] + - ["Swift.Dictionary", "Member[updateValue]", "Argument[self].CollectionElement.TupleElement[1]", "ReturnValue.OptionalSome", "value"] + - ["Swift.Set.Type", "Member[init]", "Argument[0]", "ReturnValue", "taint"] + - ["Swift.Set.Type", "Member[init]", "Argument[0].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Set", "Member[remove].WithNamedArgument[at]", "Argument[self].CollectionElement", "ReturnValue", "value"] + - ["Swift.Set", "Member[removeFirst]", "Argument[self].CollectionElement", "ReturnValue", "value"] + - ["Swift.Set", "Member[filter]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.Set", "Member[insert]", "Argument[0]", "Argument[self].CollectionElement", "value"] + - ["Swift.Set", "Member[insert]", "Argument[0]", "ReturnValue.TupleElement[1]", "taint"] + - ["Swift.Set", "Member[intersection]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.Set", "Member[subtracting]", "Argument[self].CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.Set", "Member[symmetricDifference]", "Argument[self,0].CollectionElement", "ReturnValue.CollectionElement", "taint"] + - ["Swift.Set", "Member[union]", "Argument[self,0].CollectionElement", "ReturnValue.CollectionElement", "value"] + - ["Swift.Set", "Member[update]", "Argument[with:]", "ReturnValue.OptionalSome", "taint"] + - ["Swift.Set", "Member[update]", "Argument[with:]", "Argument[self].CollectionElement", "value"] + - ["Swift.Set", "Member[remove]", "Argument[0]", "ReturnValue.OptionalSome", "taint"] + - ["Swift.Set", "Member[formSymmetricDifference]", "Argument[0].CollectionElement", "Argument[self].CollectionElement", "taint"] + - ["Swift.Set", "Member[formUnion]", "Argument[0].CollectionElement", "Argument[self].CollectionElement", "value"] + - ["Swift.TextOutputStreamable", "Member[write]", "Argument[self]", "Argument[to:]", "taint"] + - ["Swift.TextOutputStream", "Member[write]", "Argument[0]", "Argument[self]", "taint"] + - ["Swift.Substring", "Member[withUTF8]", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint"] + - ["Swift.Substring", "Member[withUTF8]", "Argument[0].Parameter[0].CollectionElement", "Argument[self]", "taint"] + - ["Swift.Substring", "Member[withUTF8]", "Argument[0].ReturnValue", "ReturnValue", "value"] + - ["Swift.StringProtocol", "Member[withCString].WithNamedArgument[encodedAs]", "Argument[self]", "Argument[1].Parameter[0].CollectionElement", "taint"] + - ["Swift.StringProtocol", "Member[withCString].WithNamedArgument[encodedAs]", "Argument[1].ReturnValue", "ReturnValue", "value"] + - ["Swift.StringProtocol", "Member[withCString]", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint"] + - ["Swift.StringProtocol", "Member[withCString]", "Argument[0].ReturnValue", "ReturnValue", "value"] + - ["Swift.StringProtocol.Type", "Member[init].WithNamedArgument[decodingCString]", "Argument[decodingCString:].OptionalSome.CollectionElement", "ReturnValue.OptionalSome.TupleElement[0]", "taint"] + - ["Swift.StringProtocol.Type", "Member[init].WithNamedArgument[cString]", "Argument[cString:]", "ReturnValue", "taint"] + - ["Swift.StringProtocol.Type", "Member[init].WithNamedArgument[cString]", "Argument[cString:].CollectionElement", "ReturnValue", "taint"] + - ["Swift.StringProtocol.Type", "Member[init].WithNamedArgument[decoding]", "Argument[decoding:]", "ReturnValue", "taint"] + - ["Swift.StringProtocol", "Member[uppercased]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.StringProtocol", "Member[lowercased]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.StringProtocol", "Member[getBytes]", "Argument[self]", "Argument[0].CollectionElement", "taint"] + - ["Swift.StringProtocol", "Member[getCString]", "Argument[self]", "Argument[0].CollectionElement", "taint"] + - ["Swift.StringProtocol", "Member[appending]", "Argument[self,0]", "ReturnValue", "taint"] + - ["Swift.StringProtocol", "Member[addingPercentEscapes]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.StringProtocol", "Member[appendingFormat]", "Argument[self,0]", "ReturnValue", "taint"] + - ["Swift.StringProtocol", "Member[appendingFormat]", "Argument[1].CollectionElement", "ReturnValue", "taint"] + - ["Swift.StringProtocol", "Member[applyingTransform]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.StringProtocol", "Member[cString]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.StringProtocol", "Member[capitalized]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.StringProtocol", "Member[completePath]", "Argument[self]", "Argument[into:].CollectionElement", "taint"] + - ["Swift.StringProtocol", "Member[completePath]", "Argument[self]", "Argument[matchesInto:].CollectionElement.CollectionElement", "taint"] + - ["Swift.StringProtocol", "Member[components]", "Argument[self]", "ReturnValue.CollectionElement", "taint"] + - ["Swift.StringProtocol", "Member[data]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.StringProtocol", "Member[folding]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.StringProtocol", "Member[lowercased].WithNamedArgument[with]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.StringProtocol", "Member[padding]", "Argument[withPad:]", "ReturnValue", "taint"] + - ["Swift.StringProtocol", "Member[padding]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.StringProtocol", "Member[propertyList]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.StringProtocol", "Member[propertyListFromStringsFileFormat]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.StringProtocol", "Member[replacingCharacters]", "Argument[with:]", "ReturnValue", "taint"] + - ["Swift.StringProtocol", "Member[replacingCharacters]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.StringProtocol", "Member[replacingOccurrences]", "Argument[with:]", "ReturnValue", "taint"] + - ["Swift.StringProtocol", "Member[replacingOccurrences]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.StringProtocol", "Member[replacingPercentEscapes]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.StringProtocol", "Member[substring].WithNamedArgument[from]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.StringProtocol", "Member[substring].WithNamedArgument[with]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.StringProtocol", "Member[trimmingCharacters]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.StringProtocol", "Member[uppercased].WithNamedArgument[with]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.StringProtocol", "Member[addingPercentEncoding]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.Strideable", "Member[advanced]", "Argument[self,by:]", "ReturnValue", "taint"] + - ["Swift.Strideable", "Member[distance]", "Argument[self,to:]", "ReturnValue", "taint"] + - ["Swift.FloatingPoint.Type", "Member[init]", "Argument[0]", "ReturnValue", "taint"] + - ["Swift.FloatingPoint", "Member[rounded]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.FloatingPoint", "Member[maximumMagnitude]", "Argument[0,1]", "ReturnValue", "taint"] + - ["Swift.FloatingPoint", "Member[minimumMagnitude]", "Argument[0,1]", "ReturnValue", "taint"] + - ["Swift.FloatingPoint", "Member[maximum]", "Argument[0,1]", "ReturnValue", "taint"] + - ["Swift.FloatingPoint", "Member[minimum]", "Argument[0,1]", "ReturnValue", "taint"] + - ["Swift.FloatingPoint", "Member[addProduct]", "Argument[self,0,1]", "Argument[self]", "taint"] + - ["Swift.FloatingPoint", "Member[addingProduct]", "Argument[self,0,1]", "ReturnValue", "taint"] + - ["Swift.FloatingPoint", "Member[squareRoot]", "Argument[self]", "ReturnValue", "taint"] + - ["Swift.FloatingPoint", "Member[formTruncatingRemainder]", "Argument[self,dividingBy:]", "Argument[self]", "taint"] + - ["Swift.FloatingPoint", "Member[truncatingRemainder]", "Argument[self,dividingBy:]", "ReturnValue", "taint"] + - ["Swift.FloatingPoint", "Member[formRemainder]", "Argument[self,dividingBy:]", "Argument[self]", "taint"] + - ["Swift.FloatingPoint", "Member[remainder]", "Argument[self,dividingBy:]", "ReturnValue", "taint"] + - ["Swift.FloatingPoint.Type", "Member[init].WithNamedArgument[magnitudeOf]", "Argument[magnitudeOf:]", "ReturnValue", "taint"] + - ["Swift.FloatingPoint.Type", "Member[init].WithNamedArgument[exponent]", "Argument[exponent:,significand:]", "ReturnValue", "taint"] + - ["Swift.OptionSet.Type", "Member[init]", "Argument[rawValue:]", "ReturnValue", "taint"] + - ["Swift", "Member[min]", "Argument[0,1]", "ReturnValue", "taint"] + - ["Swift", "Member[min]", "Argument[0,1,2]", "ReturnValue", "taint"] + - ["Swift", "Member[min]", "Argument[3].CollectionElement", "ReturnValue", "taint"] + - ["Swift", "Member[max]", "Argument[0,1]", "ReturnValue", "taint"] + - ["Swift", "Member[max]", "Argument[0,1,2]", "ReturnValue", "taint"] + - ["Swift", "Member[max]", "Argument[3].CollectionElement", "ReturnValue", "taint"] + - ["Swift", "Member[unsafeBitCast]", "Argument[0]", "ReturnValue", "taint"] + - ["Swift", "Member[unsafeDowncast]", "Argument[0]", "ReturnValue", "taint"] + - ["Swift", "Member[dump].WithNamedArgument[to]", "Argument[0,name:]", "Argument[to:]", "taint"] + - ["Swift", "Member[abs]", "Argument[0]", "ReturnValue", "taint"] + - ["Swift", "Member[numericCast]", "Argument[0]", "ReturnValue", "taint"] + - ["Swift", "Member[withExtendedLifetime]", "Argument[1].ReturnValue", "ReturnValue", "value"] + - ["Swift", "Member[withUnsafeMutablePointer]", "Argument[to:]", "Argument[1].Parameter[0].CollectionElement", "taint"] + - ["Swift", "Member[withUnsafeMutablePointer]", "Argument[1].Parameter[0].CollectionElement", "Argument[to:]", "value"] + - ["Swift", "Member[withUnsafeMutablePointer]", "Argument[1].ReturnValue", "ReturnValue", "value"] + - ["Swift", "Member[withUnsafePointer]", "Argument[to:]", "Argument[1].Parameter[0].CollectionElement", "taint"] + - ["Swift", "Member[withUnsafePointer]", "Argument[1].ReturnValue", "ReturnValue", "value"] + - ["Swift", "Member[swap]", "Argument[0]", "Argument[1]", "value"] + - ["Swift", "Member[swap]", "Argument[1]", "Argument[0]", "value"] + - ["Swift", "Member[print].WithNamedArgument[to]", "Argument[0].CollectionElement", "Argument[to:]", "taint"] + - ["Swift", "Member[print].WithNamedArgument[to]", "Argument[separator:,terminator:]", "Argument[to:]", "taint"] + - ["Swift", "Member[debugPrint].WithNamedArgument[to]", "Argument[0].CollectionElement", "Argument[to:]", "taint"] + - ["Swift", "Member[debugPrint].WithNamedArgument[to]", "Argument[separator:,terminator:]", "Argument[to:]", "taint"] + - ["Swift", "Member[withUnsafeTemporaryAllocation].WithNamedArgument[alignment]", "Argument[2].ReturnValue", "ReturnValue", "value"] + - ["Swift", "Member[withUnsafeTemporaryAllocation].WithNamedArgument[capacity]", "Argument[2].ReturnValue", "ReturnValue", "value"] + - ["Swift", "Member[withVaList]", "Argument[0]", "Argument[1].Parameter[0]", "value"] + - ["Swift", "Member[getVaList]", "Argument[0].CollectionElement", "ReturnValue", "value"] + - ["Swift", "Member[withUnsafeMutableBytes]", "Argument[of:]", "Argument[1].Parameter[0].CollectionElement", "taint"] + - ["Swift", "Member[withUnsafeMutableBytes]", "Argument[1].Parameter[0].CollectionElement", "Argument[of:]", "taint"] + - ["Swift", "Member[withUnsafeMutableBytes]", "Argument[1].ReturnValue", "ReturnValue", "value"] + - ["Swift", "Member[withUnsafeBytes]", "Argument[of:]", "Argument[1].Parameter[0].CollectionElement", "taint"] + - ["Swift", "Member[withUnsafeBytes]", "Argument[1].ReturnValue", "ReturnValue", "value"] diff --git a/unified/ql/lib/ext/swift-system.model.yml b/unified/ql/lib/ext/swift-system.model.yml new file mode 100644 index 000000000000..233ec47cf44c --- /dev/null +++ b/unified/ql/lib/ext/swift-system.model.yml @@ -0,0 +1,33 @@ +extensions: + - addsTo: + pack: codeql/unified-all + extensible: summaryModel + data: + - ["System.FilePath.Component.Type", "Member[init]", "Argument[0]", "ReturnValue", "taint"] + - ["System.FilePath.Component.Type", "Member[init].WithNamedArgument[platformString]", "Argument[platformString:]", "ReturnValue", "taint"] + - ["System.FilePath.Component", "Member[withPlatformString]", "Argument[self]", "Argument[0].Parameter[0]", "taint"] + - ["System.FilePath.Root.Type", "Member[init]", "Argument[0]", "ReturnValue", "taint"] + - ["System.FilePath.Root.Type", "Member[init].WithNamedArgument[platformString]", "Argument[platformString:]", "ReturnValue", "taint"] + - ["System.FilePath.Root", "Member[withPlatformString]", "Argument[self]", "Argument[0].Parameter[0]", "taint"] + - ["System.FilePath.Type", "Member[init]", "Argument[0]", "ReturnValue", "taint"] + - ["System.FilePath", "Member[append]", "Argument[0]", "Argument[self]", "taint"] + - ["System.FilePath.Type", "Member[init].WithNamedArgument[extendedGraphemeClusterLiteral]", "Argument[extendedGraphemeClusterLiteral:]", "ReturnValue", "taint"] + - ["System.FilePath.Type", "Member[init].WithNamedArgument[unicodeScalarLiteral]", "Argument[unicodeScalarLiteral:]", "ReturnValue", "taint"] + - ["System.FilePath", "Member[encode]", "Argument[self]", "Argument[to:]", "taint"] + - ["System.FilePath.Type", "Member[init].WithNamedArgument[from]", "Argument[from:]", "ReturnValue", "taint"] + - ["System.FilePath.Type", "Member[init].WithNamedArgument[stringLiteral]", "Argument[stringLiteral:]", "ReturnValue", "taint"] + - ["System.FilePath", "Member[withCString]", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint"] + - ["System.FilePath", "Member[withCString]", "Argument[0].ReturnValue", "ReturnValue", "taint"] + - ["System.FilePath.Type", "Member[init].WithNamedArgument[cString]", "Argument[cString:]", "ReturnValue", "taint"] + - ["System.FilePath", "Member[push]", "Argument[0]", "Argument[self]", "taint"] + - ["System.FilePath", "Member[appending]", "Argument[self,0]", "ReturnValue", "taint"] + - ["System.FilePath.Type", "Member[init].WithNamedArgument[platformString]", "Argument[platformString:]", "ReturnValue", "taint"] + - ["System.FilePath", "Member[withPlatformString]", "Argument[self]", "Argument[0].Parameter[0].CollectionElement", "taint"] + - ["System.FilePath", "Member[withPlatformString]", "Argument[0].ReturnValue", "ReturnValue", "taint"] + - ["System.FilePath.Type", "Member[init].WithNamedArgument[root].WithoutNamedArgument[components]", "Argument[root:,0]", "ReturnValue", "taint"] + - ["System.FilePath.Type", "Member[init].WithNamedArgument[components]", "Argument[root:,components:]", "ReturnValue", "taint"] + - ["System.FilePath", "Member[lexicallyNormalized]", "Argument[self]", "ReturnValue", "taint"] + - ["System.FilePath", "Member[lexicallyResolving]", "Argument[self,0]", "ReturnValue", "taint"] + - ["System.FilePath", "Member[pushing]", "Argument[self,0]", "ReturnValue", "taint"] + - ["System.FilePath", "Member[removingLastComponent]", "Argument[self]", "ReturnValue", "taint"] + - ["System.FilePath", "Member[removingRoot]", "Argument[self]", "ReturnValue", "taint"] diff --git a/unified/ql/lib/ext/swift-uikit.model.yml b/unified/ql/lib/ext/swift-uikit.model.yml new file mode 100644 index 000000000000..5a280055b669 --- /dev/null +++ b/unified/ql/lib/ext/swift-uikit.model.yml @@ -0,0 +1,18 @@ +extensions: + - addsTo: + pack: codeql/unified-all + extensible: sourceModel + data: + - ["UIKit.UITextField", "Member[text]", "local"] + - ["UIKit.UITextField", "Member[attributedText]", "local"] + - ["UIKit.UITextInput", "Member[text].ReturnValue", "local"] + - ["UIKit.UITextInput", "Member[shouldChangeText].Parameter[replacementText:]", "local"] + - ["UIKit.UISceneDelegate", "Member[scene].WithNamedArgument[continue].Parameter[continue:]", "remote"] + - ["UIKit.UISceneDelegate", "Member[scene].WithNamedArgument[didUpdate].Parameter[didUpdate:]", "remote"] + - ["UIKit.UISceneDelegate", "Member[scene].WithNamedArgument[openURLContexts].Parameter[openURLContexts:]", "remote"] + - ["UIKit.UISceneDelegate", "Member[scene].WithNamedArgument[options].Parameter[options:]", "remote"] + - ["UIKit.UIApplicationDelegate", "Member[application].WithNamedArgument[handleOpen].Parameter[handleOpen:]", "remote"] + - ["UIKit.UIApplicationDelegate", "Member[application].WithNamedArgument[options].Parameter[open:]", "remote"] + - ["UIKit.UIApplicationDelegate", "Member[application].WithNamedArgument[annotation].Parameter[open:]", "remote"] + - ["UIKit.UITextViewDelegate", "Member[textView].Parameter[replacementText:]", "local"] + - ["UIKit.UITextFieldDelegate", "Member[textField].Parameter[replacementString:]", "local"] diff --git a/unified/ql/lib/ext/swift-webkit.model.yml b/unified/ql/lib/ext/swift-webkit.model.yml new file mode 100644 index 000000000000..eb958a2b010d --- /dev/null +++ b/unified/ql/lib/ext/swift-webkit.model.yml @@ -0,0 +1,12 @@ +extensions: + - addsTo: + pack: codeql/unified-all + extensible: sourceModel + data: + - ["WebKit.WKScriptMessageHandler", "Member[userContentController].Parameter[didReceive:]", "remote"] + - addsTo: + pack: codeql/unified-all + extensible: summaryModel + data: + - ["WebKit.WKUserScript.Type", "Member[init].WithoutNamedArgument[in]", "Argument[source:]", "ReturnValue", "taint"] + - ["WebKit.WKUserScript.Type", "Member[init].WithNamedArgument[in]", "Argument[source:]", "ReturnValue", "taint"] diff --git a/unified/ql/lib/ext/swift-zip.model.yml b/unified/ql/lib/ext/swift-zip.model.yml new file mode 100644 index 000000000000..0bf5f32462fb --- /dev/null +++ b/unified/ql/lib/ext/swift-zip.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/unified-all + extensible: sinkModel + data: + - ["Zip.Zip.Type", "Member[unzipFile].Argument[0]", "unsafe-unpack"] diff --git a/unified/ql/lib/qlpack.yml b/unified/ql/lib/qlpack.yml index 19a6bc29e4c6..fc0e47e2b0a2 100644 --- a/unified/ql/lib/qlpack.yml +++ b/unified/ql/lib/qlpack.yml @@ -10,10 +10,12 @@ dependencies: codeql/controlflow: ${workspace} codeql/ssa: ${workspace} codeql/dataflow: ${workspace} + codeql/mad: ${workspace} codeql/namebinding: ${workspace} codeql/typeinference: ${workspace} codeql/util: ${workspace} dataExtensions: - ext/*.model.yml + - ext/generated/*.model.yml warnOnImplicitThis: true compileForOverlayEval: true diff --git a/unified/ql/lib/unified.qll b/unified/ql/lib/unified.qll index 7aed5441f0f7..d923f58db5cf 100644 --- a/unified/ql/lib/unified.qll +++ b/unified/ql/lib/unified.qll @@ -9,4 +9,4 @@ import codeql.unified.internal.AstExtra::Public import codeql.unified.internal.ControlFlowGraph::Public import codeql.unified.internal.NameBinding::Public import codeql.unified.internal.dataflow.DataFlowPublic -import codeql.unified.internal.mad.LegacyMaD::Public +import codeql.unified.internal.mad.DynamicMaD::Public diff --git a/unified/ql/src/utils/modelgenerator/GenerateTypeModels.ql b/unified/ql/src/utils/modelgenerator/GenerateTypeModels.ql new file mode 100644 index 000000000000..123dcf9052d8 --- /dev/null +++ b/unified/ql/src/utils/modelgenerator/GenerateTypeModels.ql @@ -0,0 +1,14 @@ +/** + * @name Generate type models + * @description Generates `typeModel` and `summaryModel` rows (of kind `type`) from `.swiftinterface` + * files, describing how to obtain instances of the types used by existing models. + * @kind table + * @id unified/utils/modelgenerator/generate-type-models + * @tags modelgenerator + */ + +private import codeql.unified.internal.mad.TypeModelGenerator as TypeModelGenerator + +query predicate typeModel = TypeModelGenerator::typeModel/3; + +query predicate summaryModel = TypeModelGenerator::summaryModel/5; diff --git a/unified/ql/test/library-tests/dataflow/imports.swift b/unified/ql/test/library-tests/dataflow/imports.swift new file mode 100644 index 000000000000..ebea10cee325 --- /dev/null +++ b/unified/ql/test/library-tests/dataflow/imports.swift @@ -0,0 +1 @@ +import TestLib diff --git a/unified/ql/test/library-tests/dataflow/test.ext.yml b/unified/ql/test/library-tests/dataflow/test.ext.yml index 352ac28dad95..89df5d9b9fb4 100644 --- a/unified/ql/test/library-tests/dataflow/test.ext.yml +++ b/unified/ql/test/library-tests/dataflow/test.ext.yml @@ -1,20 +1,20 @@ extensions: - addsTo: pack: codeql/unified-all - extensible: legacySummaryModel - data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance - - ["", "TestType", true, "identityFlow(_:)", "", "", "Argument[0]", "ReturnValue", "value", "manual"] - - ["", "TestType", true, "storeArray(_:)", "", "", "Argument[0]", "ReturnValue.ArrayElement", "value", "manual"] - - ["", "TestType", true, "readArray(_:)", "", "", "Argument[0].ArrayElement", "ReturnValue", "value", "manual"] - - ["", "TestType", true, "postUpdateArg(_:output:)", "", "", "Argument[0]", "Argument[output:].Member[outputField]", "value", "manual"] - - ["", "TestType", true, "storeUnusualName(_:)", "", "", "Argument[0]", "ReturnValue.Member[unusualNameNotAppearingInSourceCode]", "value", "manual"] - - ["", "TestType", true, "readUnusualName(_:)", "", "", "Argument[0].Member[unusualNameNotAppearingInSourceCode]", "ReturnValue", "value", "manual"] - - ["", "TestType", true, "intoCallback(_:_:)", "", "", "Argument[0]", "Argument[1].Parameter[0]", "value", "manual"] - - ["", "TestType", true, "outOfCallback(_:)", "", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "TestType", true, "throughCallback(_:_:)", "", "", "Argument[0]", "Argument[1].Parameter[0]", "value", "manual"] - - ["", "TestType", true, "throughCallback(_:_:)", "", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] - - ["", "TestType", true, "taintFlow(_:)", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["", "TestType", true, "swap(_:_:)", "", "", "Argument[0]", "Argument[1]", "value", "manual"] - - ["", "TestType", true, "swap(_:_:)", "", "", "Argument[1]", "Argument[0]", "value", "manual"] - - ["", "TestType", true, "getField()", "", "", "Argument[self].Member[field]", "ReturnValue", "value", "manual"] - - ["", "TestType", true, "setField(_:)", "", "", "Argument[0]", "Argument[self].Member[field]", "value", "manual"] + extensible: summaryModel + data: + - ["TestLib.TestType.Type", "Member[identityFlow]", "Argument[0]", "ReturnValue", "value"] + - ["TestLib.TestType.Type", "Member[storeArray]", "Argument[0]", "ReturnValue.ArrayElement", "value"] + - ["TestLib.TestType.Type", "Member[readArray]", "Argument[0].ArrayElement", "ReturnValue", "value"] + - ["TestLib.TestType.Type", "Member[postUpdateArg]", "Argument[0]", "Argument[output:].Member[outputField]", "value"] + - ["TestLib.TestType.Type", "Member[storeUnusualName]", "Argument[0]", "ReturnValue.Member[unusualNameNotAppearingInSourceCode]", "value"] + - ["TestLib.TestType.Type", "Member[readUnusualName]", "Argument[0].Member[unusualNameNotAppearingInSourceCode]", "ReturnValue", "value"] + - ["TestLib.TestType.Type", "Member[intoCallback]", "Argument[0]", "Argument[1].Parameter[0]", "value"] + - ["TestLib.TestType.Type", "Member[outOfCallback]", "Argument[0].ReturnValue", "ReturnValue", "value"] + - ["TestLib.TestType.Type", "Member[throughCallback]", "Argument[0]", "Argument[1].Parameter[0]", "value"] + - ["TestLib.TestType.Type", "Member[throughCallback]", "Argument[1].ReturnValue", "ReturnValue", "value"] + - ["TestLib.TestType.Type", "Member[taintFlow]", "Argument[0]", "ReturnValue", "taint"] + - ["TestLib.TestType.Type", "Member[swap]", "Argument[0]", "Argument[1]", "value"] + - ["TestLib.TestType.Type", "Member[swap]", "Argument[1]", "Argument[0]", "value"] + - ["TestLib.TestType", "Member[getField]", "Argument[self].Member[field]", "ReturnValue", "value"] + - ["TestLib.TestType", "Member[setField]", "Argument[0]", "Argument[self].Member[field]", "value"] diff --git a/unified/ql/test/library-tests/dynamic-mad/MyLib.swiftinterface b/unified/ql/test/library-tests/dynamic-mad/MyLib.swiftinterface new file mode 100644 index 000000000000..3d1f13e5353c --- /dev/null +++ b/unified/ql/test/library-tests/dynamic-mad/MyLib.swiftinterface @@ -0,0 +1,15 @@ +// swift-interface-format-version: 1.0 +// swift-module-flags: -module-name MyLib +import Swift + +public class StubClass { + public init() + public static func make() -> StubClass + public func sink(arg: Swift::String) +} + +public class Builder { + public func withFoo() -> Self + public func withBar() -> Self + public func run(cmd: Swift::String) +} diff --git a/unified/ql/test/library-tests/dynamic-mad/test.expected b/unified/ql/test/library-tests/dynamic-mad/test.expected new file mode 100644 index 000000000000..f6446d36b3ea --- /dev/null +++ b/unified/ql/test/library-tests/dynamic-mad/test.expected @@ -0,0 +1,36 @@ +isSink +| test.swift:10:26:10:29 | path | path-injection | +| test.swift:11:34:11:34 | 0 | string-length | +| test.swift:34:5:34:36 | ... .tlsMinimumSupportedProtocol | tls | +| test.swift:54:9:54:17 | arguments | command-injection | +| test.swift:55:9:55:22 | ... .arguments | command-injection | +| test.swift:72:5:72:15 | ... .arguments | command-injection | +| test.swift:73:5:73:26 | ... .arguments | command-injection | +| test.swift:74:5:74:28 | ... .arguments | command-injection | +| test.swift:77:5:77:16 | ... .arguments | command-injection | +| test.swift:78:10:78:17 | [self arg] ... .run(...) | receiver | +| test.swift:93:19:93:21 | "x" | stub | +| test.swift:94:32:94:34 | "y" | stub | +| test.swift:95:33:95:35 | "z" | stub | +| test.swift:96:36:96:38 | "x" | builder | +| test.swift:97:16:97:18 | "y" | builder | +| test.swift:102:11:102:13 | "x" | log-injection | +| test.swift:116:5:116:31 | ... .arguments | command-injection | +isSource +| test.swift:5:9:5:31 | String(...) | remote | +| test.swift:6:9:6:36 | ... .init(...) | remote | +| test.swift:7:9:7:37 | ... .String(...) | remote | +| test.swift:8:9:8:52 | String(...) | remote-encoding | +| test.swift:16:9:16:32 | ... .contents(...) | local | +| test.swift:17:9:17:49 | ... .contents(...) | local | +| test.swift:18:9:18:64 | ... .contents(...) | local | +| test.swift:23:9:23:32 | ... .contents(...) | local | +| test.swift:24:9:24:34 | ... .contents(...) | local | +| test.swift:25:9:25:34 | ... .contents(...) | local | +| test.swift:27:9:27:34 | ... .contents(...) | local | +| test.swift:28:9:28:50 | ... .contents(...) | local | +| test.swift:32:9:32:15 | ... .text | local | +| test.swift:42:27:42:32 | string | local | +| test.swift:82:54:82:57 | data | remote | +| test.swift:84:22:84:25 | data | remote | +| test.swift:101:9:101:23 | getRemoteData(...) | remote | diff --git a/unified/ql/test/library-tests/dynamic-mad/test.ext.yml b/unified/ql/test/library-tests/dynamic-mad/test.ext.yml new file mode 100644 index 000000000000..3be1dfa9a063 --- /dev/null +++ b/unified/ql/test/library-tests/dynamic-mad/test.ext.yml @@ -0,0 +1,37 @@ +extensions: + - addsTo: + pack: codeql/unified-all + extensible: sourceModel + data: + - ["Swift.String.Type", "Member[init].WithNamedArgument[testSource].WithoutNamedArgument[testEncoding].ReturnValue", "remote"] + - ["Swift.String.Type", "Member[init].WithNamedArgument[testSource].WithNamedArgument[testEncoding].ReturnValue", "remote-encoding"] + - ["TestFoundation.FileManager", "Member[contents].ReturnValue", "local"] + - ["TestUIKit.UITextField", "Member[text]", "local"] + - ["TestUIKit.UITextFieldDelegate", "Member[textField].WithNamedArgument[shouldChangeCharactersIn].Parameter[replacementString:]", "local"] + - ["TestFoundation.URLSession", "Member[dataTask].Argument[completionHandler:].Parameter[0]", "remote"] + - ["TestFoundation", "Member[getRemoteData].ReturnValue", "remote"] + - addsTo: + pack: codeql/unified-all + extensible: sinkModel + data: + - ["Swift.String.Type", "Member[init].Argument[testSink:]", "path-injection"] + - ["TestFoundation.URLSessionConfiguration", "Member[tlsMinimumSupportedProtocol]", "tls"] + - ["TestFoundation.Process", "Member[arguments]", "command-injection"] + - ["TestFoundation.Process", "Member[run].Argument[self]", "receiver"] + - ["MyLib.StubClass", "Member[sink].Argument[arg:]", "stub"] + - ["MyLib.Builder", "Member[run].Argument[cmd:]", "builder"] + - ["Swift.String.Index.Type", "Member[init].Argument[testOffset:]", "string-length"] + - ["TestFoundation", "Member[NSLog].Argument[0]", "log-injection"] + - addsTo: + pack: codeql/unified-all + extensible: summaryModel + data: + - ["MyLib.Builder", "", "", "Member[withFoo].ReturnValue", "type"] + - ["MyLib.Builder", "", "", "Member[withBar].ReturnValue", "type"] + - addsTo: + pack: codeql/unified-all + extensible: typeModel + data: + - ["TestFoundation.FileManager", "TestFoundation.FileManager.Type", "Member[default]"] + - ["MyLib.StubClass", "MyLib.StubClass.Type", "Member[make].ReturnValue"] + - ["TestFoundation", "TestUIKit", ""] diff --git a/unified/ql/test/library-tests/dynamic-mad/test.ql b/unified/ql/test/library-tests/dynamic-mad/test.ql new file mode 100644 index 000000000000..2bf2ccbd2858 --- /dev/null +++ b/unified/ql/test/library-tests/dynamic-mad/test.ql @@ -0,0 +1,6 @@ +private import unified +private import codeql.unified.internal.mad.DynamicMaD as DynamicMaD + +query predicate isSource(DataFlow::Node node, string kind) { DynamicMaD::sourceNode(node, kind, _) } + +query predicate isSink(DataFlow::Node node, string kind) { DynamicMaD::sinkNode(node, kind, _) } diff --git a/unified/ql/test/library-tests/dynamic-mad/test.qlref b/unified/ql/test/library-tests/dynamic-mad/test.qlref new file mode 100644 index 000000000000..ab6773f15f90 --- /dev/null +++ b/unified/ql/test/library-tests/dynamic-mad/test.qlref @@ -0,0 +1,2 @@ +query: test.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/unified/ql/test/library-tests/dynamic-mad/test.swift b/unified/ql/test/library-tests/dynamic-mad/test.swift new file mode 100644 index 000000000000..9c54862012ba --- /dev/null +++ b/unified/ql/test/library-tests/dynamic-mad/test.swift @@ -0,0 +1,117 @@ +import TestUIKit +import MyLib + +func testInitializers(url: URL, path: String) { + _ = String(testSource: url) // $ isSource=remote + _ = String.init(testSource: url) // $ isSource=remote + _ = Swift.String(testSource: url) // $ isSource=remote + _ = String(testSource: url, testEncoding: .utf8) // $ isSource=remote-encoding + _ = String(url) // not a source + _ = String(testSink: path) // $ isSink=path-injection + _ = String.Index(testOffset: 0) // $ isSink=string-length +} + +func testTypeModels() { + let fm = FileManager.default + _ = fm.contents(atPath: "x") // $ isSource=local + _ = FileManager.default.contents(atPath: "y") // $ isSource=local + _ = TestFoundation.FileManager.default.contents(atPath: "z") // $ isSource=local + _ = FileManager.contents(atPath: "w") // not a source (static access) +} + +func testAnnotations(fm: FileManager, fm2: FileManager?, fm3: FileManager!) { + _ = fm.contents(atPath: "x") // $ isSource=local + _ = fm2?.contents(atPath: "x") // $ isSource=local + _ = fm2!.contents(atPath: "x") // $ isSource=local + let fm4 = fm2 + _ = fm4?.contents(atPath: "x") // $ isSource=local + _ = (fm as! FileManager).contents(atPath: "x") // $ isSource=local +} + +func testProperties(tf: UITextField, conf: URLSessionConfiguration) { + _ = tf.text // $ isSource=local + tf.text = "" // not a source + conf.tlsMinimumSupportedProtocol = 0 // $ isSink=tls + _ = conf.tlsMinimumSupportedProtocol // not a sink +} + +class MyDelegate: UITextFieldDelegate { + func textField( + _ textField: UITextField, + shouldChangeCharactersIn range: NSRange, + replacementString string: String // $ isSource=local + ) -> Bool { + return true + } + + func textField(_ textField: UITextField, replacementString string: String) {} // not a source +} + +class MyProcess: Process { + var harmless: String = "" + + func setup(x: String) { + arguments = [x] // $ isSink=command-injection + self.arguments = [x] // $ isSink=command-injection + harmless = x // not a sink + } +} + +class MyProcess2: MyProcess {} + +func makeProcess() -> Process? { + return Process() +} + +struct ProcessHolder { + let p: Process +} + +func testSubclasses(holder: ProcessHolder) { + let p = MyProcess() + p.arguments = ["a"] // $ isSink=command-injection + MyProcess2().arguments = ["a"] // $ isSink=command-injection + makeProcess()?.arguments = ["a"] // $ isSink=command-injection + holder.p.arguments = ["a"] // $ MISSING: isSink=command-injection + let p2 = Process() + p2.arguments = ["b"] // $ isSink=command-injection + try! p2.run() // $ isSink=receiver +} + +func testCallbacks(session: URLSession, url: URL) { + session.dataTask(with: url, completionHandler: { data, response, error in // $ isSource=remote + }) + let handler = { (data: Data?, response: URLResponse?, error: Error?) in // $ isSource=remote + } + session.dataTask(with: url, completionHandler: handler) + session.dataTask(with: url) { data, response, error in // $ MISSING: isSource=remote + } +} + +func testStubs(b: Builder) { + let obj = StubClass() + obj.sink(arg: "x") // $ isSink=stub + StubClass.make().sink(arg: "y") // $ isSink=stub + MyLib.StubClass().sink(arg: "z") // $ isSink=stub + b.withFoo().withBar().run(cmd: "x") // $ isSink=builder + b.run(cmd: "y") // $ isSink=builder +} + +func testModuleMembers() { + _ = getRemoteData() // $ isSource=remote + NSLog("x") // $ isSink=log-injection +} + +func testShadowing() { + func NSLog(_ s: String) {} + NSLog("x") // not a sink (local function) +} + +class MyProcess3: Process { + static func helper() -> MyHelper { return MyHelper() } +} + +func testStaticCallOnSubclass() { + MyProcess3.helper().arguments = ["a"] // not a sink + MyProcess3.init().arguments = ["a"] // $ isSink=command-injection +} diff --git a/unified/ql/test/library-tests/mad/Foundation.swiftinterface b/unified/ql/test/library-tests/mad/Foundation.swiftinterface new file mode 100644 index 000000000000..780ad37a5ce4 --- /dev/null +++ b/unified/ql/test/library-tests/mad/Foundation.swiftinterface @@ -0,0 +1,10 @@ +// swift-interface-format-version: 1.0 +// swift-module-flags: -module-name Foundation +// Stubs for testing. + +class URLSessionConfiguration { + var tlsMaximumSupportedProtocol: Int = 0 + var tlsMinimumSupportedProtocol: Int = 0 + var tlsMaximumSupportedProtocolVersion: Int = 0 + var tlsMinimumSupportedProtocolVersion: Int = 0 +} diff --git a/unified/ql/test/library-tests/mad/RealmSwift.swiftinterface b/unified/ql/test/library-tests/mad/RealmSwift.swiftinterface new file mode 100644 index 000000000000..487491d8adf7 --- /dev/null +++ b/unified/ql/test/library-tests/mad/RealmSwift.swiftinterface @@ -0,0 +1,7 @@ +// swift-interface-format-version: 1.0 +// swift-module-flags: -module-name RealmSwift +// Stubs for testing. + +class Realm { + struct Configuration {} +} diff --git a/unified/ql/test/library-tests/mad/SQLite.swiftinterface b/unified/ql/test/library-tests/mad/SQLite.swiftinterface new file mode 100644 index 000000000000..c1247f5c9f15 --- /dev/null +++ b/unified/ql/test/library-tests/mad/SQLite.swiftinterface @@ -0,0 +1,9 @@ +// swift-interface-format-version: 1.0 +// swift-module-flags: -module-name SQLite +// Stubs for testing. + +class Connection { + enum Location { + static func uri(_ path: String, parameters: String) {} + } +} diff --git a/unified/ql/test/library-tests/mad/UIKit.swiftinterface b/unified/ql/test/library-tests/mad/UIKit.swiftinterface new file mode 100644 index 000000000000..a04b01aebdaf --- /dev/null +++ b/unified/ql/test/library-tests/mad/UIKit.swiftinterface @@ -0,0 +1,7 @@ +// swift-interface-format-version: 1.0 +// swift-module-flags: -module-name UIKit +// Stubs for testing. + +class UITextField { + var text: String = "" +} diff --git a/unified/ql/test/library-tests/mad/invalidModels.expected b/unified/ql/test/library-tests/mad/invalidModels.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/unified/ql/test/library-tests/mad/invalidModels.ql b/unified/ql/test/library-tests/mad/invalidModels.ql new file mode 100644 index 000000000000..6a7ff4d7e403 --- /dev/null +++ b/unified/ql/test/library-tests/mad/invalidModels.ql @@ -0,0 +1,3 @@ +private import codeql.unified.internal.mad.DynamicMaD as DynamicMaD + +query predicate invalidAccessPath = DynamicMaD::Debug::invalidAccessPath/3; diff --git a/unified/ql/test/library-tests/mad/test.expected b/unified/ql/test/library-tests/mad/test.expected index b8648a61054a..86ab3ff945a2 100644 --- a/unified/ql/test/library-tests/mad/test.expected +++ b/unified/ql/test/library-tests/mad/test.expected @@ -1,27 +1,33 @@ isSink -| test.swift:9:28:9:33 | string | path-injection | -| test.swift:11:25:11:30 | string | path-injection | -| test.swift:14:25:14:30 | string | path-injection | -| test.swift:18:17:18:22 | string | path-injection | -| test.swift:21:5:21:16 | [self arg] ... .md5(...) | weak-hash-input-MD5 | -| test.swift:23:20:23:25 | string | regex-use | -| test.swift:24:20:24:25 | string | regex-use | -| test.swift:71:37:71:49 | encodedOffset | string-length | -| test.swift:72:42:72:54 | encodedOffset | string-length | -| test.swift:76:24:76:36 | encryptionKey | encryption-key | -| test.swift:77:18:77:24 | fileURL | path-injection | -| test.swift:88:24:88:36 | encryptionKey | encryption-key | -| test.swift:89:18:89:24 | fileURL | path-injection | -| test.swift:100:24:100:36 | encryptionKey | encryption-key | -| test.swift:101:18:101:24 | fileURL | path-injection | -| test.swift:107:23:107:34 | seedFilePath | path-injection | -| test.swift:119:29:119:34 | string | path-injection | +| test.swift:14:28:14:33 | string | path-injection | +| test.swift:16:25:16:30 | string | path-injection | +| test.swift:19:25:19:30 | string | path-injection | +| test.swift:23:17:23:22 | string | path-injection | +| test.swift:26:5:26:16 | [self arg] ... .md5(...) | weak-hash-input-MD5 | +| test.swift:28:20:28:25 | string | regex-use | +| test.swift:29:20:29:25 | string | regex-use | +| test.swift:49:5:49:45 | ... .tlsMaximumSupportedProtocol | tls-protocol-version | +| test.swift:50:5:50:45 | ... .tlsMinimumSupportedProtocol | tls-protocol-version | +| test.swift:51:5:51:52 | ... .tlsMaximumSupportedProtocolVersion | tls-protocol-version | +| test.swift:52:5:52:52 | ... .tlsMinimumSupportedProtocolVersion | tls-protocol-version | +| test.swift:61:37:61:49 | encodedOffset | string-length | +| test.swift:62:42:62:54 | encodedOffset | string-length | +| test.swift:66:24:66:36 | encryptionKey | encryption-key | +| test.swift:67:18:67:24 | fileURL | path-injection | +| test.swift:78:24:78:36 | encryptionKey | encryption-key | +| test.swift:79:18:79:24 | fileURL | path-injection | +| test.swift:90:24:90:36 | encryptionKey | encryption-key | +| test.swift:91:18:91:24 | fileURL | path-injection | +| test.swift:97:23:97:34 | seedFilePath | path-injection | +| test.swift:103:29:103:34 | string | path-injection | isSource -| test.swift:4:5:4:27 | String(...) | remote | -| test.swift:5:5:5:44 | String(...) | remote | -| test.swift:6:5:6:48 | String(...) | remote | -| test.swift:7:5:7:32 | ... .init(...) | remote | -| test.swift:9:5:9:34 | String(...) | local | -| test.swift:10:5:12:24 | String(...) | local | -| test.swift:13:5:15:28 | String(...) | local | -| test.swift:29:29:29:32 | text | local | +| test.swift:9:5:9:27 | String(...) | remote | +| test.swift:10:5:10:44 | String(...) | remote | +| test.swift:11:5:11:48 | String(...) | remote | +| test.swift:12:5:12:32 | ... .init(...) | remote | +| test.swift:14:5:14:34 | String(...) | local | +| test.swift:15:5:17:24 | String(...) | local | +| test.swift:18:5:20:28 | String(...) | local | +| test.swift:34:29:34:32 | text | local | +| test.swift:46:9:46:20 | ... .count | string-length | +| test.swift:47:9:47:22 | ... .text | local | diff --git a/unified/ql/test/library-tests/mad/test.swift b/unified/ql/test/library-tests/mad/test.swift index fd1af8f38351..28e35fed759b 100644 --- a/unified/ql/test/library-tests/mad/test.swift +++ b/unified/ql/test/library-tests/mad/test.swift @@ -1,3 +1,8 @@ +import Foundation +import RealmSwift +import SQLite +import UIKit + func test(url: URL, string: String) { String(url) // not a source @@ -26,40 +31,25 @@ func test(url: URL, string: String) { class TestTextInput: UITextInput { func shouldChangeText( in range: UITextRange, - replacementText text: String // $ isSource=local // parameters not detected yet + replacementText text: String // $ isSource=local ) -> Bool { return true } } } -class UITextField { - var text: String = "" -} - -class URLSessionConfiguration { - var tlsMaximumSupportedProtocol: Int = 0 - var tlsMinimumSupportedProtocol: Int = 0 - var tlsMaximumSupportedProtocolVersion: Int = 0 - var tlsMinimumSupportedProtocolVersion: Int = 0 -} - func testProperties( string: String, textField: UITextField, configuration: URLSessionConfiguration ) { - _ = string.count // $ MISSING: isSource=string-length - _ = textField.text // $ MISSING: isSource=local + _ = string.count // $ isSource=string-length + _ = textField.text // $ isSource=local - configuration.tlsMaximumSupportedProtocol = 0 // $ MISSING: isSink=tls-protocol-version - configuration.tlsMinimumSupportedProtocol = 0 // $ MISSING: isSink=tls-protocol-version - configuration.tlsMaximumSupportedProtocolVersion = 0 // $ MISSING: isSink=tls-protocol-version - configuration.tlsMinimumSupportedProtocolVersion = 0 // $ MISSING: isSink=tls-protocol-version -} - -class Realm { - struct Configuration {} + configuration.tlsMaximumSupportedProtocol = 0 // $ isSink=tls-protocol-version + configuration.tlsMinimumSupportedProtocol = 0 // $ isSink=tls-protocol-version + configuration.tlsMaximumSupportedProtocolVersion = 0 // $ isSink=tls-protocol-version + configuration.tlsMinimumSupportedProtocolVersion = 0 // $ isSink=tls-protocol-version } func testQualifiedConstructors( @@ -109,12 +99,6 @@ func testQualifiedConstructors( syncConfiguration: nil) } -class Connection { - enum Location { - static func uri(_ path: String, parameters: String) {} - } -} - func testConnectionLocation(string: String) { Connection.Location.uri(string, parameters: "") // $ isSink=path-injection } diff --git a/unified/ql/test/library-tests/type-model-generator/GenBase.swiftinterface b/unified/ql/test/library-tests/type-model-generator/GenBase.swiftinterface new file mode 100644 index 000000000000..f4a807869d90 --- /dev/null +++ b/unified/ql/test/library-tests/type-model-generator/GenBase.swiftinterface @@ -0,0 +1,7 @@ +// swift-interface-format-version: 1.0 +// swift-module-flags: -module-name GenBase +import Swift + +public class BaseReader { + public func read() -> Swift::String +} diff --git a/unified/ql/test/library-tests/type-model-generator/GenLib.swiftinterface b/unified/ql/test/library-tests/type-model-generator/GenLib.swiftinterface new file mode 100644 index 000000000000..0bc7f3f8ba3c --- /dev/null +++ b/unified/ql/test/library-tests/type-model-generator/GenLib.swiftinterface @@ -0,0 +1,56 @@ +// swift-interface-format-version: 1.0 +// swift-module-flags: -module-name GenLib +import Swift +@_exported import GenBase + +public class Manager { + public static var shared: GenLib::Manager { get } + public class var `default`: GenLib::Manager { get } + public init() + public init(configuration: Swift::Int) + public func makeReader(path: Swift::String) -> GenLib::Reader + public func makeReader(url: Swift::String) -> GenLib::Reader + public func makeReader(url: Swift::String, options: GenLib::Reader.Options) -> GenLib::Reader? + public func makeReader(_ name: Swift::String) -> GenLib::Reader + public func fetch(completionHandler: @escaping (GenLib::Reader?, Swift::Int) -> Swift::Void) + public func configured() -> Self + internal func hidden() -> GenLib::Reader + public func _private() -> GenLib::Reader + @_spi(Testing) public func spi() -> GenLib::Reader + @available(*, unavailable, message: "gone") + public func unavailable() -> GenLib::Reader + public var currentReader: GenLib::Reader? { get set } +} + +public class Reader : GenBase::BaseReader, GenLib::ReadingProtocol { + public var text: Swift::String { get } + public struct Options { + public static var fast: GenLib::Reader.Options { get } + } +} + +public protocol ReadingProtocol { + func readAll() -> Swift::String +} + +public func globalReader() -> GenLib::Reader + +extension GenLib::ExternalThing { + public var reader: GenLib::Reader { get } + public static func make() -> GenLib::ExternalThing +} + +extension GenLib::ExternalThing : GenLib::ReadingProtocol {} + +public class Unrelated { + public var reader: Swift::Int { get } +} + +public protocol MidProtocol : GenLib::ReadingProtocol {} + +public class Deep : GenLib::MidProtocol {} + +public class Qualified { + public var reader: GenLib.Reader { get } + public var base: GenBase.BaseReader { get } +} diff --git a/unified/ql/test/library-tests/type-model-generator/test.expected b/unified/ql/test/library-tests/type-model-generator/test.expected new file mode 100644 index 000000000000..c4d87de3dca8 --- /dev/null +++ b/unified/ql/test/library-tests/type-model-generator/test.expected @@ -0,0 +1,26 @@ +typeModel +| GenBase | GenLib | | +| GenBase.BaseReader | GenLib.Qualified | Member[base] | +| GenBase.BaseReader | GenLib.Reader | | +| GenLib.ExternalThing | GenLib.ExternalThing.Type | Member[make].ReturnValue | +| GenLib.Manager | GenLib.Manager.Type | Member[default] | +| GenLib.Manager | GenLib.Manager.Type | Member[shared] | +| GenLib.Reader | GenLib | Member[globalReader].ReturnValue | +| GenLib.Reader | GenLib.ExternalThing | Member[reader] | +| GenLib.Reader | GenLib.Manager | Member[currentReader] | +| GenLib.Reader | GenLib.Manager | Member[fetch].Argument[completionHandler:].Parameter[0] | +| GenLib.Reader | GenLib.Manager | Member[makeReader].ReturnValue | +| GenLib.Reader | GenLib.Manager | Member[makeReader].WithNamedArgument[options].ReturnValue | +| GenLib.Reader | GenLib.Manager | Member[makeReader].WithNamedArgument[path].ReturnValue | +| GenLib.Reader | GenLib.Manager | Member[makeReader].WithNamedArgument[url].WithoutNamedArgument[options].ReturnValue | +| GenLib.Reader | GenLib.Qualified | Member[reader] | +| GenLib.Reader.Options | GenLib.Reader.Options.Type | Member[fast] | +| GenLib.ReadingProtocol | GenLib.Deep | | +| GenLib.ReadingProtocol | GenLib.ExternalThing | | +| GenLib.ReadingProtocol | GenLib.MidProtocol | | +| GenLib.ReadingProtocol | GenLib.Reader | | +| Swift.String | GenBase.BaseReader | Member[read].ReturnValue | +| Swift.String | GenLib.Reader | Member[text] | +| Swift.String | GenLib.ReadingProtocol | Member[readAll].ReturnValue | +summaryModel +| GenLib.Manager | | | Member[configured].ReturnValue | type | diff --git a/unified/ql/test/library-tests/type-model-generator/test.ext.yml b/unified/ql/test/library-tests/type-model-generator/test.ext.yml new file mode 100644 index 000000000000..ffffc2d3e645 --- /dev/null +++ b/unified/ql/test/library-tests/type-model-generator/test.ext.yml @@ -0,0 +1,11 @@ +extensions: + - addsTo: + pack: codeql/unified-all + extensible: sourceModel + data: + - ["GenBase.BaseReader", "Member[read].ReturnValue", "test"] + - ["GenLib.ReadingProtocol", "Member[readAll].ReturnValue", "test"] + - ["GenLib.Reader.Options", "", "test"] + - ["GenLib.Reader", "Member[text]", "test"] + - ["GenLib.Manager", "Member[unknown]", "test"] + - ["GenLib.ExternalThing", "Member[unknown]", "test"] diff --git a/unified/ql/test/library-tests/type-model-generator/test.qlref b/unified/ql/test/library-tests/type-model-generator/test.qlref new file mode 100644 index 000000000000..2b3796ff87af --- /dev/null +++ b/unified/ql/test/library-tests/type-model-generator/test.qlref @@ -0,0 +1 @@ +query: utils/modelgenerator/GenerateTypeModels.ql diff --git a/unified/ql/test/query-tests/security/CWE-022/PathInjection/AppleArchive.swiftinterface b/unified/ql/test/query-tests/security/CWE-022/PathInjection/AppleArchive.swiftinterface new file mode 100644 index 000000000000..3bf693514159 --- /dev/null +++ b/unified/ql/test/query-tests/security/CWE-022/PathInjection/AppleArchive.swiftinterface @@ -0,0 +1,20 @@ +// swift-interface-format-version: 1.0 +// swift-module-flags: -module-name AppleArchive +// Stubs for testing. + +class ArchiveByteStream { + static func fileStream(fd: FileDescriptor, automaticClose: Bool = true) -> ArchiveByteStream? { + return nil + } + static func withFileStream( + fd: FileDescriptor, automaticClose: Bool = true, _ body: (ArchiveByteStream) -> E + ) -> E { return body(ArchiveByteStream()) } + static func fileStream( + path: FilePath, mode: FileDescriptor.AccessMode, options: FileDescriptor.OpenOptions, + permissions: FilePermissions + ) -> ArchiveByteStream? { return nil } + static func withFileStream( + path: FilePath, mode: FileDescriptor.AccessMode, options: FileDescriptor.OpenOptions, + permissions: FilePermissions, _ body: (ArchiveByteStream) -> E + ) -> E { return body(ArchiveByteStream()) } +} diff --git a/unified/ql/test/query-tests/security/CWE-022/PathInjection/Foundation.swiftinterface b/unified/ql/test/query-tests/security/CWE-022/PathInjection/Foundation.swiftinterface new file mode 100644 index 000000000000..1857f4707a4c --- /dev/null +++ b/unified/ql/test/query-tests/security/CWE-022/PathInjection/Foundation.swiftinterface @@ -0,0 +1,204 @@ +// swift-interface-format-version: 1.0 +// swift-module-flags: -module-name Foundation +// Stubs for testing. + +struct URL { + enum DirectoryHint { + case inferFromPath + } + + init?(string: String) {} + init(fileURLWithPath path: String, isDirectory: Bool) {} + init( + filePath path: String, directoryHint: URL.DirectoryHint = .inferFromPath, + relativeTo base: URL? = nil + ) {} + + mutating func appendPathComponent(_ pathComponent: String) {} + func appendingPathComponent(_ pathComponent: String) -> URL { return self } +} + +class NSURL { + init?(string: String) {} + + func appendingPathComponent(_ pathComponent: String) -> URL? { return nil } + + var filePathURL: URL? { URL(string: "") } +} + +extension StringProtocol { + func completePath( + into outputName: UnsafeMutablePointer? = nil, + caseSensitive: Bool, + matchesInto outputArray: UnsafeMutablePointer<[String]>? = nil, + filterTypes: [String]? = nil + ) -> Int { 0 } +} + +extension String { + struct Encoding { + static let utf8 = Encoding() + } + + init(contentsOf: URL) { + let data = "" + self.init(data) + } + + init(contentsOfFile path: String) throws { + self.init("") + } + + init(contentsOfFile path: String, encoding enc: String.Encoding) throws { + self.init("") + } + + init(contentsOfFile path: String, usedEncoding: inout String.Encoding) throws { + self.init("") + } +} + +class NSString { + init() {} + init(string aString: String) {} + convenience init(contentsOfFile path: String, encoding enc: UInt) throws { self.init() } + convenience init(contentsOfFile path: String, usedEncoding enc: UnsafeMutablePointer?) + throws + { self.init() } + + func write(toFile: String, atomically: Bool, encoding: UInt) {} + func write(to: URL, atomically: Bool, encoding: UInt) {} + + var utf8String: UnsafePointer? { return nil } +} +protocol DataProtocol {} +class Data: DataProtocol { + struct ReadingOptions: OptionSet { let rawValue: Int } + struct WritingOptions: OptionSet { let rawValue: Int } + + init(_ elements: S) { count = 0 } + init(contentsOf: URL, options: ReadingOptions) { count = 0 } + + func copyBytes(to: UnsafeMutablePointer, count: Int) {} + + func write(to: URL, options: Data.WritingOptions = []) {} + + var count: Int +} + +class NSData { + init() {} + init?(contentsOfFile path: String) {} + init?(contentsOfMappedFile path: String) {} + init?(contentsOf url: URL) {} + class func dataWithContentsOfMappedFile(_ path: String) -> Any? { return nil } + + struct WritingOptions: OptionSet { let rawValue: Int } + func write(to: URL, atomically: Bool) -> Bool { return false } + func write(to: URL, options: NSData.WritingOptions) {} + func write(toFile: String, atomically: Bool) -> Bool { return false } + func write(toFile: String, options: NSData.WritingOptions) {} +} + +class NSKeyedUnarchiver { + func unarchiveObject(withFile: String) -> Any? { return nil } +} + +struct URLResourceKey {} + +struct FileAttributeKey: Hashable {} + +struct ObjCBool {} + +struct AutoreleasingUnsafeMutablePointer {} + +class FileManager { + class DirectoryEnumerator {} + struct DirectoryEnumerationOptions: OptionSet { let rawValue: Int } + struct ItemReplacementOptions: OptionSet { let rawValue: Int } + struct UnmountOptions: OptionSet { let rawValue: Int } + struct SearchPathDomainMask {} + enum SearchPathDirectory: UInt { case none } + enum URLRelationship: Int { case none } + + func contentsOfDirectory( + at: URL, includingPropertiesForKeys: [URLResourceKey]?, + options: FileManager.DirectoryEnumerationOptions + ) -> [URL] { return [] } + func contentsOfDirectory(atPath: String) -> [String] { return [] } + func enumerator( + at: URL, includingPropertiesForKeys: [URLResourceKey]?, + options: FileManager.DirectoryEnumerationOptions, errorHandler: ((URL, Error) -> Bool)? + ) -> FileManager.DirectoryEnumerator? { return nil } + func enumerator(atPath: String) -> FileManager.DirectoryEnumerator? { return nil } + func subpathsOfDirectory(atPath: String) -> [String] { return [] } + func subpaths(atPath: String) -> [String]? { return nil } + func createDirectory( + at: URL, withIntermediateDirectories: Bool, attributes: [FileAttributeKey: Any]? + ) {} + func createDirectory( + atPath: String, withIntermediateDirectories: Bool, attributes: [FileAttributeKey: Any]? + ) {} + func createFile(atPath: String, contents: Data?, attributes: [FileAttributeKey: Any]?) -> Bool { + return false + } + func removeItem(at: URL) {} + func removeItem(atPath: String) {} + func trashItem(at: URL, resultingItemURL: AutoreleasingUnsafeMutablePointer?) {} + func replaceItemAt( + _: URL, withItemAt: URL, backupItemName: String?, + options: FileManager.ItemReplacementOptions + ) -> URL? { return nil } + func replaceItem( + at: URL, withItemAt: URL, backupItemName: String?, + options: FileManager.ItemReplacementOptions, + resultingItemURL: AutoreleasingUnsafeMutablePointer? + ) {} + func copyItem(at: URL, to: URL) {} + func copyItem(atPath: String, toPath: String) {} + func moveItem(at: URL, to: URL) {} + func moveItem(atPath: String, toPath: String) {} + func createSymbolicLink(at: URL, withDestinationURL: URL) {} + func createSymbolicLink(atPath: String, withDestinationPath: String) {} + func linkItem(at: URL, to: URL) {} + func linkItem(atPath: String, toPath: String) {} + func destinationOfSymbolicLink(atPath: String) -> String { return "" } + func fileExists(atPath: String) -> Bool { return false } + func fileExists(atPath: String, isDirectory: UnsafeMutablePointer?) -> Bool { + return false + } + func setAttributes(_: [FileAttributeKey: Any], ofItemAtPath: String) {} + func contents(atPath: String) -> Data? { return nil } + func contentsEqual(atPath: String, andPath: String) -> Bool { return false } + func changeCurrentDirectoryPath(_: String) -> Bool { return false } + func unmountVolume( + at: URL, options: FileManager.UnmountOptions, completionHandler: (Error?) -> Void + ) {} + // Deprecated methods + func fileAttributes(atPath path: String, traverseLink yorn: Bool) -> [AnyHashable: Any]? { nil } + func changeFileAttributes(_: [AnyHashable: Any], atPath: String) -> Bool { return false } + func attributesOfItem(atPath path: String) throws -> [FileAttributeKey: Any] { return [:] } + func directoryContents(atPath: String) -> [Any]? { return nil } + func createDirectory(atPath: String, attributes: [AnyHashable: Any]) -> Bool { return false } + func createSymbolicLink(atPath: String, pathContent: String) -> Bool { return false } + func pathContentOfSymbolicLink(atPath: String) -> String? { return nil } + func replaceItemAtURL( + originalItemURL: NSURL, withItemAtURL: NSURL, backupItemName: String?, + options: FileManager.ItemReplacementOptions + ) -> NSURL? { return nil } +} + +class Bundle { + init?(url: URL) {} + init?(path: String) {} +} + +class KeyPath { +} + +class NSSortDescriptor { + init(key: String?, ascending: Bool) {} + convenience init(keyPath: KeyPath, ascending: Bool) { + self.init(key: nil, ascending: ascending) + } +} diff --git a/unified/ql/test/query-tests/security/CWE-022/PathInjection/GRDB.swiftinterface b/unified/ql/test/query-tests/security/CWE-022/PathInjection/GRDB.swiftinterface new file mode 100644 index 000000000000..2b6750016a84 --- /dev/null +++ b/unified/ql/test/query-tests/security/CWE-022/PathInjection/GRDB.swiftinterface @@ -0,0 +1,28 @@ +// swift-interface-format-version: 1.0 +// swift-module-flags: -module-name GRDB +// Stubs for testing. + +struct Configuration {} + +class Database { + init(path: String, description: String, configuration: Configuration) {} +} + +class DatabasePool { + init(path: String, configuration: Configuration) {} +} + +class DatabaseQueue { + init(path: String, configuration: Configuration) {} +} + +class DatabaseSnapshotPool { + init(path: String, configuration: Configuration) {} +} + +class SerializedDatabase { + init( + path: String, configuration: Configuration = Configuration(), defaultLabel: String, + purpose: String? = nil + ) {} +} diff --git a/unified/ql/test/query-tests/security/CWE-022/PathInjection/PathInjectionTest.expected b/unified/ql/test/query-tests/security/CWE-022/PathInjection/PathInjectionTest.expected index 74768a2a4957..d33778bfa3e6 100644 --- a/unified/ql/test/query-tests/security/CWE-022/PathInjection/PathInjectionTest.expected +++ b/unified/ql/test/query-tests/security/CWE-022/PathInjection/PathInjectionTest.expected @@ -1,361 +1,392 @@ #select -| testPathInjection.swift:346:24:346:32 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:346:24:346:32 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:349:30:349:38 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:349:30:349:38 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:350:22:350:30 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:350:22:350:30 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:351:34:351:45 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:351:34:351:45 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:352:26:352:37 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:352:26:352:37 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:355:40:355:48 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:355:40:355:48 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:356:44:356:55 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:356:44:356:55 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:358:13:358:21 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:358:13:358:21 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:359:35:359:46 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:359:35:359:46 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:360:44:360:55 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:360:44:360:55 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:361:33:361:44 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:361:33:361:44 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:362:28:362:36 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:362:28:362:36 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:363:40:363:51 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:363:40:363:51 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:364:35:364:46 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:364:35:364:46 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:365:23:365:31 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:365:23:365:31 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:366:27:366:38 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:366:27:366:38 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:367:22:367:30 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:367:22:367:30 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:368:30:368:38 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:368:30:368:38 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:369:51:369:59 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:369:51:369:59 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:371:13:371:21 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:371:13:371:21 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:374:34:374:42 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:374:34:374:42 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:376:21:376:29 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:376:21:376:29 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:377:34:377:42 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:377:34:377:42 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:378:25:378:36 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:378:25:378:36 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:379:37:379:48 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:379:37:379:48 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:380:21:380:29 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:380:21:380:29 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:381:34:381:42 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:381:34:381:42 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:382:25:382:36 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:382:25:382:36 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:383:37:383:48 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:383:37:383:48 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:384:31:384:39 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:384:31:384:39 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:385:60:385:68 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:385:60:385:68 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:386:35:386:46 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:386:35:386:46 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:387:60:387:71 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:387:60:387:71 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:388:21:388:29 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:388:21:388:29 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:389:34:389:42 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:389:34:389:42 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:390:25:390:36 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:390:25:390:36 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:391:37:391:48 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:391:37:391:48 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:392:50:392:61 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:392:50:392:61 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:393:35:393:46 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:393:35:393:46 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:395:17:395:28 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:395:17:395:28 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:396:41:396:52 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:396:41:396:52 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:397:33:397:44 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:397:33:397:44 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:398:38:398:49 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:398:38:398:49 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:399:51:399:62 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:399:51:399:62 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:400:43:400:54 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:400:43:400:54 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:401:34:401:42 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:401:34:401:42 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:403:50:403:61 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:403:50:403:61 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:404:42:404:53 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:404:42:404:53 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:405:40:405:51 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:405:40:405:51 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:406:43:406:54 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:406:43:406:54 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:407:60:407:71 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:407:60:407:71 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:408:50:408:61 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:408:50:408:61 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:410:26:410:36 | remoteNsUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:410:26:410:36 | remoteNsUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:412:52:412:62 | remoteNsUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:412:52:412:62 | remoteNsUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:415:41:415:52 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:415:41:415:52 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:416:41:416:52 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:416:41:416:52 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:417:41:417:52 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:417:41:417:52 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:419:43:419:54 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:419:43:419:54 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:420:43:420:54 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:420:43:420:54 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:421:26:421:34 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:421:26:421:34 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:422:30:422:41 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:422:30:422:41 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:424:59:424:70 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:424:59:424:70 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:425:46:425:76 | TypeCastExpr | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:425:46:425:76 | TypeCastExpr | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:426:42:426:72 | TypeCastExpr | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:426:42:426:72 | TypeCastExpr | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:430:15:430:51 | FilePath(...) | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:430:15:430:51 | FilePath(...) | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:433:15:433:51 | FilePath(...) | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:433:15:433:51 | FilePath(...) | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:436:25:436:33 | remoteUrl | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:436:25:436:33 | remoteUrl | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:437:26:437:37 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:437:26:437:37 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:441:28:441:39 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:441:28:441:39 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:443:32:443:43 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:443:32:443:43 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:445:33:445:44 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:445:33:445:44 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:447:40:447:51 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:447:40:447:51 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:456:15:456:26 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:456:15:456:26 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:482:22:482:33 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:482:22:482:33 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:484:24:484:30 | buffer2 | testPathInjection.swift:477:22:477:87 | Data(...) | testPathInjection.swift:484:24:484:30 | buffer2 | This path depends on a $@. | testPathInjection.swift:477:22:477:87 | Data(...) | user-provided value | -| testPathInjection.swift:486:25:486:36 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:486:25:486:36 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:498:49:498:60 | remoteString | testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:498:49:498:60 | remoteString | This path depends on a $@. | testPathInjection.swift:340:24:340:78 | String(...) | user-provided value | -| testPathInjection.swift:502:26:502:36 | remoteData2 | testPathInjection.swift:501:23:501:75 | Data(...) | testPathInjection.swift:502:26:502:36 | remoteData2 | This path depends on a $@. | testPathInjection.swift:501:23:501:75 | Data(...) | user-provided value | -| testPathInjection.swift:512:37:512:48 | remoteString | testPathInjection.swift:506:24:506:78 | String(...) | testPathInjection.swift:512:37:512:48 | remoteString | This path depends on a $@. | testPathInjection.swift:506:24:506:78 | String(...) | user-provided value | -| testPathInjection.swift:514:33:514:44 | remoteString | testPathInjection.swift:506:24:506:78 | String(...) | testPathInjection.swift:514:33:514:44 | remoteString | This path depends on a $@. | testPathInjection.swift:506:24:506:78 | String(...) | user-provided value | -| testPathInjection.swift:526:28:526:66 | ... .appendingPathComponent(...) | testPathInjection.swift:521:24:521:78 | String(...) | testPathInjection.swift:526:28:526:66 | ... .appendingPathComponent(...) | This path depends on a $@. | testPathInjection.swift:521:24:521:78 | String(...) | user-provided value | -| testPathInjection.swift:527:28:527:93 | ... .appendingPathComponent(...) | testPathInjection.swift:521:24:521:78 | String(...) | testPathInjection.swift:527:28:527:93 | ... .appendingPathComponent(...) | This path depends on a $@. | testPathInjection.swift:521:24:521:78 | String(...) | user-provided value | -| testPathInjection.swift:529:28:529:29 | u1 | testPathInjection.swift:521:24:521:78 | String(...) | testPathInjection.swift:529:28:529:29 | u1 | This path depends on a $@. | testPathInjection.swift:521:24:521:78 | String(...) | user-provided value | -| testPathInjection.swift:531:28:531:39 | remoteString | testPathInjection.swift:521:24:521:78 | String(...) | testPathInjection.swift:531:28:531:39 | remoteString | This path depends on a $@. | testPathInjection.swift:521:24:521:78 | String(...) | user-provided value | -| testPathInjection.swift:537:24:537:63 | ... ! | testPathInjection.swift:521:24:521:78 | String(...) | testPathInjection.swift:537:24:537:63 | ... ! | This path depends on a $@. | testPathInjection.swift:521:24:521:78 | String(...) | user-provided value | -| testPathInjection.swift:541:24:541:53 | ... ! | testPathInjection.swift:521:24:521:78 | String(...) | testPathInjection.swift:541:24:541:53 | ... ! | This path depends on a $@. | testPathInjection.swift:521:24:521:78 | String(...) | user-provided value | -| testPathInjection.swift:543:32:543:43 | remoteString | testPathInjection.swift:521:24:521:78 | String(...) | testPathInjection.swift:543:32:543:43 | remoteString | This path depends on a $@. | testPathInjection.swift:521:24:521:78 | String(...) | user-provided value | -| testPathInjection.swift:544:38:544:49 | remoteString | testPathInjection.swift:521:24:521:78 | String(...) | testPathInjection.swift:544:38:544:49 | remoteString | This path depends on a $@. | testPathInjection.swift:521:24:521:78 | String(...) | user-provided value | -| testPathInjection.swift:545:45:545:56 | remoteString | testPathInjection.swift:521:24:521:78 | String(...) | testPathInjection.swift:545:45:545:56 | remoteString | This path depends on a $@. | testPathInjection.swift:521:24:521:78 | String(...) | user-provided value | -| testPathInjection.swift:549:32:549:41 | ... .pointee | testPathInjection.swift:521:24:521:78 | String(...) | testPathInjection.swift:549:32:549:41 | ... .pointee | This path depends on a $@. | testPathInjection.swift:521:24:521:78 | String(...) | user-provided value | -| testPathInjection.swift:561:35:561:46 | remoteString | testPathInjection.swift:521:24:521:78 | String(...) | testPathInjection.swift:561:35:561:46 | remoteString | This path depends on a $@. | testPathInjection.swift:521:24:521:78 | String(...) | user-provided value | -| testPathInjection.swift:562:41:562:52 | remoteString | testPathInjection.swift:521:24:521:78 | String(...) | testPathInjection.swift:562:41:562:52 | remoteString | This path depends on a $@. | testPathInjection.swift:521:24:521:78 | String(...) | user-provided value | -| testPathInjection.swift:584:25:584:36 | remoteString | testPathInjection.swift:582:24:582:78 | String(...) | testPathInjection.swift:584:25:584:36 | remoteString | This path depends on a $@. | testPathInjection.swift:582:24:582:78 | String(...) | user-provided value | -| testPathInjection.swift:586:41:586:52 | remoteString | testPathInjection.swift:582:24:582:78 | String(...) | testPathInjection.swift:586:41:586:52 | remoteString | This path depends on a $@. | testPathInjection.swift:582:24:582:78 | String(...) | user-provided value | -| testPathInjection.swift:588:38:588:49 | remoteString | testPathInjection.swift:582:24:582:78 | String(...) | testPathInjection.swift:588:38:588:49 | remoteString | This path depends on a $@. | testPathInjection.swift:582:24:582:78 | String(...) | user-provided value | -| testPathInjection.swift:590:22:590:33 | remoteString | testPathInjection.swift:582:24:582:78 | String(...) | testPathInjection.swift:590:22:590:33 | remoteString | This path depends on a $@. | testPathInjection.swift:582:24:582:78 | String(...) | user-provided value | +| testPathInjection.swift:18:24:18:32 | remoteUrl | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:18:24:18:32 | remoteUrl | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:21:30:21:38 | remoteUrl | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:21:30:21:38 | remoteUrl | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:22:22:22:30 | remoteUrl | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:22:22:22:30 | remoteUrl | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:23:34:23:45 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:23:34:23:45 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:24:26:24:37 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:24:26:24:37 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:27:40:27:48 | remoteUrl | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:27:40:27:48 | remoteUrl | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:28:44:28:55 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:28:44:28:55 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:30:13:30:21 | remoteUrl | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:30:13:30:21 | remoteUrl | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:31:35:31:46 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:31:35:31:46 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:32:44:32:55 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:32:44:32:55 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:33:33:33:44 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:33:33:33:44 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:34:28:34:36 | remoteUrl | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:34:28:34:36 | remoteUrl | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:35:40:35:51 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:35:40:35:51 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:36:35:36:46 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:36:35:36:46 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:37:23:37:31 | remoteUrl | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:37:23:37:31 | remoteUrl | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:38:27:38:38 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:38:27:38:38 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:39:22:39:30 | remoteUrl | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:39:22:39:30 | remoteUrl | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:40:30:40:38 | remoteUrl | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:40:30:40:38 | remoteUrl | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:41:51:41:59 | remoteUrl | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:41:51:41:59 | remoteUrl | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:43:13:43:21 | remoteUrl | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:43:13:43:21 | remoteUrl | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:46:34:46:42 | remoteUrl | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:46:34:46:42 | remoteUrl | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:48:21:48:29 | remoteUrl | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:48:21:48:29 | remoteUrl | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:49:34:49:42 | remoteUrl | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:49:34:49:42 | remoteUrl | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:50:25:50:36 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:50:25:50:36 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:51:37:51:48 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:51:37:51:48 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:52:21:52:29 | remoteUrl | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:52:21:52:29 | remoteUrl | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:53:34:53:42 | remoteUrl | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:53:34:53:42 | remoteUrl | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:54:25:54:36 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:54:25:54:36 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:55:37:55:48 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:55:37:55:48 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:56:31:56:39 | remoteUrl | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:56:31:56:39 | remoteUrl | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:57:60:57:68 | remoteUrl | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:57:60:57:68 | remoteUrl | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:58:35:58:46 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:58:35:58:46 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:59:60:59:71 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:59:60:59:71 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:60:21:60:29 | remoteUrl | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:60:21:60:29 | remoteUrl | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:61:34:61:42 | remoteUrl | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:61:34:61:42 | remoteUrl | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:62:25:62:36 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:62:25:62:36 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:63:37:63:48 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:63:37:63:48 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:64:50:64:61 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:64:50:64:61 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:65:35:65:46 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:65:35:65:46 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:67:17:67:28 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:67:17:67:28 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:68:41:68:52 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:68:41:68:52 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:69:33:69:44 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:69:33:69:44 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:70:38:70:49 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:70:38:70:49 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:71:51:71:62 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:71:51:71:62 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:72:43:72:54 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:72:43:72:54 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:73:34:73:42 | remoteUrl | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:73:34:73:42 | remoteUrl | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:75:50:75:61 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:75:50:75:61 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:76:42:76:53 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:76:42:76:53 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:77:40:77:51 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:77:40:77:51 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:78:43:78:54 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:78:43:78:54 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:79:60:79:71 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:79:60:79:71 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:80:50:80:61 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:80:50:80:61 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:82:26:82:36 | remoteNsUrl | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:82:26:82:36 | remoteNsUrl | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:84:52:84:62 | remoteNsUrl | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:84:52:84:62 | remoteNsUrl | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:87:41:87:52 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:87:41:87:52 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:88:41:88:52 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:88:41:88:52 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:89:41:89:52 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:89:41:89:52 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:91:43:91:54 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:91:43:91:54 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:92:43:92:54 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:92:43:92:54 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:93:26:93:34 | remoteUrl | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:93:26:93:34 | remoteUrl | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:94:30:94:41 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:94:30:94:41 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:96:59:96:70 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:96:59:96:70 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:97:46:97:76 | TypeCastExpr | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:97:46:97:76 | TypeCastExpr | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:98:42:98:72 | TypeCastExpr | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:98:42:98:72 | TypeCastExpr | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:102:15:102:51 | FilePath(...) | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:102:15:102:51 | FilePath(...) | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:105:15:105:51 | FilePath(...) | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:105:15:105:51 | FilePath(...) | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:108:25:108:33 | remoteUrl | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:108:25:108:33 | remoteUrl | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:109:26:109:37 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:109:26:109:37 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:113:28:113:39 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:113:28:113:39 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:115:32:115:43 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:115:32:115:43 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:117:33:117:44 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:117:33:117:44 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:119:40:119:51 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:119:40:119:51 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:121:38:121:49 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:121:38:121:49 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:123:38:123:49 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:123:38:123:49 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:125:38:125:49 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:125:38:125:49 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:128:15:128:26 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:128:15:128:26 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:135:38:135:46 | remoteUrl | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:135:38:135:46 | remoteUrl | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:137:43:137:51 | remoteUrl | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:137:43:137:51 | remoteUrl | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:141:5:141:18 | ... .fileURL | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:141:5:141:18 | ... .fileURL | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:143:5:143:23 | ... .seedFilePath | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:143:5:143:23 | ... .seedFilePath | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:154:22:154:33 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:154:22:154:33 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:156:24:156:30 | buffer2 | testPathInjection.swift:149:22:149:87 | Data(...) | testPathInjection.swift:156:24:156:30 | buffer2 | This path depends on a $@. | testPathInjection.swift:149:22:149:87 | Data(...) | user-provided value | +| testPathInjection.swift:158:25:158:36 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:158:25:158:36 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:169:49:169:60 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:169:49:169:60 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:170:49:170:60 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:170:49:170:60 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:172:25:172:36 | remoteString | testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:172:25:172:36 | remoteString | This path depends on a $@. | testPathInjection.swift:12:24:12:78 | String(...) | user-provided value | +| testPathInjection.swift:174:26:174:36 | remoteData2 | testPathInjection.swift:173:23:173:75 | Data(...) | testPathInjection.swift:174:26:174:36 | remoteData2 | This path depends on a $@. | testPathInjection.swift:173:23:173:75 | Data(...) | user-provided value | +| testPathInjection.swift:184:37:184:48 | remoteString | testPathInjection.swift:178:24:178:78 | String(...) | testPathInjection.swift:184:37:184:48 | remoteString | This path depends on a $@. | testPathInjection.swift:178:24:178:78 | String(...) | user-provided value | +| testPathInjection.swift:186:33:186:44 | remoteString | testPathInjection.swift:178:24:178:78 | String(...) | testPathInjection.swift:186:33:186:44 | remoteString | This path depends on a $@. | testPathInjection.swift:178:24:178:78 | String(...) | user-provided value | +| testPathInjection.swift:198:28:198:66 | ... .appendingPathComponent(...) | testPathInjection.swift:193:24:193:78 | String(...) | testPathInjection.swift:198:28:198:66 | ... .appendingPathComponent(...) | This path depends on a $@. | testPathInjection.swift:193:24:193:78 | String(...) | user-provided value | +| testPathInjection.swift:199:28:199:93 | ... .appendingPathComponent(...) | testPathInjection.swift:193:24:193:78 | String(...) | testPathInjection.swift:199:28:199:93 | ... .appendingPathComponent(...) | This path depends on a $@. | testPathInjection.swift:193:24:193:78 | String(...) | user-provided value | +| testPathInjection.swift:201:28:201:29 | u1 | testPathInjection.swift:193:24:193:78 | String(...) | testPathInjection.swift:201:28:201:29 | u1 | This path depends on a $@. | testPathInjection.swift:193:24:193:78 | String(...) | user-provided value | +| testPathInjection.swift:203:28:203:39 | remoteString | testPathInjection.swift:193:24:193:78 | String(...) | testPathInjection.swift:203:28:203:39 | remoteString | This path depends on a $@. | testPathInjection.swift:193:24:193:78 | String(...) | user-provided value | +| testPathInjection.swift:209:24:209:63 | ... ! | testPathInjection.swift:193:24:193:78 | String(...) | testPathInjection.swift:209:24:209:63 | ... ! | This path depends on a $@. | testPathInjection.swift:193:24:193:78 | String(...) | user-provided value | +| testPathInjection.swift:213:24:213:53 | ... ! | testPathInjection.swift:193:24:193:78 | String(...) | testPathInjection.swift:213:24:213:53 | ... ! | This path depends on a $@. | testPathInjection.swift:193:24:193:78 | String(...) | user-provided value | +| testPathInjection.swift:215:32:215:43 | remoteString | testPathInjection.swift:193:24:193:78 | String(...) | testPathInjection.swift:215:32:215:43 | remoteString | This path depends on a $@. | testPathInjection.swift:193:24:193:78 | String(...) | user-provided value | +| testPathInjection.swift:216:38:216:49 | remoteString | testPathInjection.swift:193:24:193:78 | String(...) | testPathInjection.swift:216:38:216:49 | remoteString | This path depends on a $@. | testPathInjection.swift:193:24:193:78 | String(...) | user-provided value | +| testPathInjection.swift:217:45:217:56 | remoteString | testPathInjection.swift:193:24:193:78 | String(...) | testPathInjection.swift:217:45:217:56 | remoteString | This path depends on a $@. | testPathInjection.swift:193:24:193:78 | String(...) | user-provided value | +| testPathInjection.swift:221:32:221:41 | ... .pointee | testPathInjection.swift:193:24:193:78 | String(...) | testPathInjection.swift:221:32:221:41 | ... .pointee | This path depends on a $@. | testPathInjection.swift:193:24:193:78 | String(...) | user-provided value | +| testPathInjection.swift:233:35:233:46 | remoteString | testPathInjection.swift:193:24:193:78 | String(...) | testPathInjection.swift:233:35:233:46 | remoteString | This path depends on a $@. | testPathInjection.swift:193:24:193:78 | String(...) | user-provided value | +| testPathInjection.swift:234:41:234:52 | remoteString | testPathInjection.swift:193:24:193:78 | String(...) | testPathInjection.swift:234:41:234:52 | remoteString | This path depends on a $@. | testPathInjection.swift:193:24:193:78 | String(...) | user-provided value | +| testPathInjection.swift:256:25:256:36 | remoteString | testPathInjection.swift:254:24:254:78 | String(...) | testPathInjection.swift:256:25:256:36 | remoteString | This path depends on a $@. | testPathInjection.swift:254:24:254:78 | String(...) | user-provided value | +| testPathInjection.swift:258:41:258:52 | remoteString | testPathInjection.swift:254:24:254:78 | String(...) | testPathInjection.swift:258:41:258:52 | remoteString | This path depends on a $@. | testPathInjection.swift:254:24:254:78 | String(...) | user-provided value | +| testPathInjection.swift:260:38:260:49 | remoteString | testPathInjection.swift:254:24:254:78 | String(...) | testPathInjection.swift:260:38:260:49 | remoteString | This path depends on a $@. | testPathInjection.swift:254:24:254:78 | String(...) | user-provided value | +| testPathInjection.swift:262:22:262:33 | remoteString | testPathInjection.swift:254:24:254:78 | String(...) | testPathInjection.swift:262:22:262:33 | remoteString | This path depends on a $@. | testPathInjection.swift:254:24:254:78 | String(...) | user-provided value | edges -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:341:33:341:44 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:342:37:342:48 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:351:34:351:45 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:352:26:352:37 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:356:44:356:55 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:359:35:359:46 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:360:44:360:55 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:361:33:361:44 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:363:40:363:51 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:364:35:364:46 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:366:27:366:38 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:378:25:378:36 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:379:37:379:48 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:382:25:382:36 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:383:37:383:48 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:386:35:386:46 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:387:60:387:71 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:390:25:390:36 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:391:37:391:48 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:392:50:392:61 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:393:35:393:46 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:395:17:395:28 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:396:41:396:52 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:397:33:397:44 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:398:38:398:49 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:399:51:399:62 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:400:43:400:54 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:403:50:403:61 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:404:42:404:53 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:405:40:405:51 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:406:43:406:54 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:407:60:407:71 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:408:50:408:61 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:415:41:415:52 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:416:41:416:52 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:417:41:417:52 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:419:43:419:54 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:420:43:420:54 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:422:30:422:41 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:424:59:424:70 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:425:46:425:57 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:426:42:426:53 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:430:39:430:50 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:433:39:433:50 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:437:26:437:37 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:441:28:441:39 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:443:32:443:43 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:445:33:445:44 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:447:40:447:51 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:456:15:456:26 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:482:22:482:33 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:486:25:486:36 | remoteString | provenance | | -| testPathInjection.swift:340:9:340:20 | remoteString | testPathInjection.swift:498:49:498:60 | remoteString | provenance | | -| testPathInjection.swift:340:24:340:78 | String(...) | testPathInjection.swift:340:9:340:20 | remoteString | provenance | | -| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:346:24:346:32 | remoteUrl | provenance | | -| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:349:30:349:38 | remoteUrl | provenance | | -| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:350:22:350:30 | remoteUrl | provenance | | -| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:355:40:355:48 | remoteUrl | provenance | | -| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:358:13:358:21 | remoteUrl | provenance | | -| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:362:28:362:36 | remoteUrl | provenance | | -| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:365:23:365:31 | remoteUrl | provenance | | -| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:367:22:367:30 | remoteUrl | provenance | | -| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:368:30:368:38 | remoteUrl | provenance | | -| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:369:51:369:59 | remoteUrl | provenance | | -| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:371:13:371:21 | remoteUrl | provenance | | -| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:374:34:374:42 | remoteUrl | provenance | | -| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:376:21:376:29 | remoteUrl | provenance | | -| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:377:34:377:42 | remoteUrl | provenance | | -| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:380:21:380:29 | remoteUrl | provenance | | -| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:381:34:381:42 | remoteUrl | provenance | | -| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:384:31:384:39 | remoteUrl | provenance | | -| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:385:60:385:68 | remoteUrl | provenance | | -| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:388:21:388:29 | remoteUrl | provenance | | -| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:389:34:389:42 | remoteUrl | provenance | | -| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:401:34:401:42 | remoteUrl | provenance | | -| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:421:26:421:34 | remoteUrl | provenance | | -| testPathInjection.swift:341:9:341:17 | remoteUrl | testPathInjection.swift:436:25:436:33 | remoteUrl | provenance | | -| testPathInjection.swift:341:33:341:44 | remoteString | testPathInjection.swift:341:9:341:17 | remoteUrl | provenance | | -| testPathInjection.swift:342:9:342:19 | remoteNsUrl | testPathInjection.swift:410:26:410:36 | remoteNsUrl | provenance | | -| testPathInjection.swift:342:9:342:19 | remoteNsUrl | testPathInjection.swift:412:52:412:62 | remoteNsUrl | provenance | | -| testPathInjection.swift:342:37:342:48 | remoteString | testPathInjection.swift:342:9:342:19 | remoteNsUrl | provenance | | -| testPathInjection.swift:425:46:425:57 | remoteString | testPathInjection.swift:425:46:425:76 | TypeCastExpr | provenance | | -| testPathInjection.swift:426:42:426:53 | remoteString | testPathInjection.swift:426:42:426:72 | TypeCastExpr | provenance | | -| testPathInjection.swift:430:39:430:50 | remoteString | testPathInjection.swift:430:15:430:51 | FilePath(...) | provenance | | -| testPathInjection.swift:433:39:433:50 | remoteString | testPathInjection.swift:433:15:433:51 | FilePath(...) | provenance | | -| testPathInjection.swift:477:9:477:18 | remoteData | testPathInjection.swift:479:5:479:14 | remoteData | provenance | | -| testPathInjection.swift:477:22:477:87 | Data(...) | testPathInjection.swift:477:9:477:18 | remoteData | provenance | | -| testPathInjection.swift:479:5:479:14 | remoteData | testPathInjection.swift:479:30:479:36 | [post] buffer2 | provenance | | -| testPathInjection.swift:479:30:479:36 | [post] buffer2 | testPathInjection.swift:484:24:484:30 | buffer2 | provenance | | -| testPathInjection.swift:501:9:501:19 | remoteData2 | testPathInjection.swift:502:26:502:36 | remoteData2 | provenance | | -| testPathInjection.swift:501:23:501:75 | Data(...) | testPathInjection.swift:501:9:501:19 | remoteData2 | provenance | | -| testPathInjection.swift:506:9:506:20 | remoteString | testPathInjection.swift:512:37:512:48 | remoteString | provenance | | -| testPathInjection.swift:506:9:506:20 | remoteString | testPathInjection.swift:514:33:514:44 | remoteString | provenance | | -| testPathInjection.swift:506:24:506:78 | String(...) | testPathInjection.swift:506:9:506:20 | remoteString | provenance | | -| testPathInjection.swift:521:9:521:20 | remoteString | testPathInjection.swift:526:54:526:65 | remoteString | provenance | | -| testPathInjection.swift:521:9:521:20 | remoteString | testPathInjection.swift:527:54:527:65 | remoteString | provenance | | -| testPathInjection.swift:521:9:521:20 | remoteString | testPathInjection.swift:528:28:528:39 | remoteString | provenance | | -| testPathInjection.swift:521:9:521:20 | remoteString | testPathInjection.swift:531:28:531:39 | remoteString | provenance | | -| testPathInjection.swift:521:9:521:20 | remoteString | testPathInjection.swift:537:50:537:61 | remoteString | provenance | | -| testPathInjection.swift:521:9:521:20 | remoteString | testPathInjection.swift:539:28:539:39 | remoteString | provenance | | -| testPathInjection.swift:521:9:521:20 | remoteString | testPathInjection.swift:543:32:543:43 | remoteString | provenance | | -| testPathInjection.swift:521:9:521:20 | remoteString | testPathInjection.swift:544:38:544:49 | remoteString | provenance | | -| testPathInjection.swift:521:9:521:20 | remoteString | testPathInjection.swift:545:45:545:56 | remoteString | provenance | | -| testPathInjection.swift:521:9:521:20 | remoteString | testPathInjection.swift:548:18:548:29 | remoteString | provenance | | -| testPathInjection.swift:521:9:521:20 | remoteString | testPathInjection.swift:561:35:561:46 | remoteString | provenance | | -| testPathInjection.swift:521:9:521:20 | remoteString | testPathInjection.swift:562:41:562:52 | remoteString | provenance | | -| testPathInjection.swift:521:24:521:78 | String(...) | testPathInjection.swift:521:9:521:20 | remoteString | provenance | | -| testPathInjection.swift:526:54:526:65 | remoteString | testPathInjection.swift:526:28:526:66 | ... .appendingPathComponent(...) | provenance | | -| testPathInjection.swift:527:28:527:66 | ... .appendingPathComponent(...) | testPathInjection.swift:16:74:16:77 | self | provenance | | -| testPathInjection.swift:527:28:527:66 | ... .appendingPathComponent(...) | testPathInjection.swift:527:28:527:93 | ... .appendingPathComponent(...) | provenance | | -| testPathInjection.swift:527:54:527:65 | remoteString | testPathInjection.swift:527:28:527:66 | ... .appendingPathComponent(...) | provenance | | -| testPathInjection.swift:528:28:528:39 | remoteString | testPathInjection.swift:529:28:529:29 | u1 | provenance | | -| testPathInjection.swift:537:24:537:62 | ... .appendingPathComponent(...) | testPathInjection.swift:537:24:537:63 | ... ! | provenance | | -| testPathInjection.swift:537:50:537:61 | remoteString | testPathInjection.swift:537:24:537:62 | ... .appendingPathComponent(...) | provenance | | -| testPathInjection.swift:539:9:539:10 | u4 | testPathInjection.swift:541:24:541:25 | u4 | provenance | | -| testPathInjection.swift:539:28:539:39 | remoteString | testPathInjection.swift:539:9:539:10 | u4 | provenance | | -| testPathInjection.swift:541:24:541:25 | u4 | testPathInjection.swift:541:24:541:52 | ... .appendingPathComponent(...) | provenance | | -| testPathInjection.swift:541:24:541:52 | ... .appendingPathComponent(...) | testPathInjection.swift:541:24:541:53 | ... ! | provenance | | -| testPathInjection.swift:548:5:548:6 | [post] s1 [pointee] | testPathInjection.swift:549:32:549:33 | s1 [pointee] | provenance | | -| testPathInjection.swift:548:5:548:14 | ... .pointee | testPathInjection.swift:548:5:548:6 | [post] s1 [pointee] | provenance | | -| testPathInjection.swift:548:18:548:29 | remoteString | testPathInjection.swift:548:5:548:14 | ... .pointee | provenance | | -| testPathInjection.swift:549:32:549:33 | s1 [pointee] | testPathInjection.swift:549:32:549:41 | ... .pointee | provenance | | -| testPathInjection.swift:582:9:582:20 | remoteString | testPathInjection.swift:584:25:584:36 | remoteString | provenance | | -| testPathInjection.swift:582:9:582:20 | remoteString | testPathInjection.swift:586:41:586:52 | remoteString | provenance | | -| testPathInjection.swift:582:9:582:20 | remoteString | testPathInjection.swift:588:38:588:49 | remoteString | provenance | | -| testPathInjection.swift:582:9:582:20 | remoteString | testPathInjection.swift:590:22:590:33 | remoteString | provenance | | -| testPathInjection.swift:582:24:582:78 | String(...) | testPathInjection.swift:582:9:582:20 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:13:33:13:44 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:14:37:14:48 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:23:34:23:45 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:24:26:24:37 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:28:44:28:55 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:31:35:31:46 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:32:44:32:55 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:33:33:33:44 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:35:40:35:51 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:36:35:36:46 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:38:27:38:38 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:50:25:50:36 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:51:37:51:48 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:54:25:54:36 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:55:37:55:48 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:58:35:58:46 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:59:60:59:71 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:62:25:62:36 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:63:37:63:48 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:64:50:64:61 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:65:35:65:46 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:67:17:67:28 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:68:41:68:52 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:69:33:69:44 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:70:38:70:49 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:71:51:71:62 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:72:43:72:54 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:75:50:75:61 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:76:42:76:53 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:77:40:77:51 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:78:43:78:54 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:79:60:79:71 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:80:50:80:61 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:87:41:87:52 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:88:41:88:52 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:89:41:89:52 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:91:43:91:54 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:92:43:92:54 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:94:30:94:41 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:96:59:96:70 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:97:46:97:57 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:98:42:98:53 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:102:39:102:50 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:105:39:105:50 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:109:26:109:37 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:113:28:113:39 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:115:32:115:43 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:117:33:117:44 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:119:40:119:51 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:121:38:121:49 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:123:38:123:49 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:125:38:125:49 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:128:15:128:26 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:154:22:154:33 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:158:25:158:36 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:169:49:169:60 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:170:49:170:60 | remoteString | provenance | | +| testPathInjection.swift:12:9:12:20 | remoteString | testPathInjection.swift:172:25:172:36 | remoteString | provenance | | +| testPathInjection.swift:12:24:12:78 | String(...) | testPathInjection.swift:12:9:12:20 | remoteString | provenance | | +| testPathInjection.swift:13:9:13:17 | remoteUrl | testPathInjection.swift:18:24:18:32 | remoteUrl | provenance | | +| testPathInjection.swift:13:9:13:17 | remoteUrl | testPathInjection.swift:21:30:21:38 | remoteUrl | provenance | | +| testPathInjection.swift:13:9:13:17 | remoteUrl | testPathInjection.swift:22:22:22:30 | remoteUrl | provenance | | +| testPathInjection.swift:13:9:13:17 | remoteUrl | testPathInjection.swift:27:40:27:48 | remoteUrl | provenance | | +| testPathInjection.swift:13:9:13:17 | remoteUrl | testPathInjection.swift:30:13:30:21 | remoteUrl | provenance | | +| testPathInjection.swift:13:9:13:17 | remoteUrl | testPathInjection.swift:34:28:34:36 | remoteUrl | provenance | | +| testPathInjection.swift:13:9:13:17 | remoteUrl | testPathInjection.swift:37:23:37:31 | remoteUrl | provenance | | +| testPathInjection.swift:13:9:13:17 | remoteUrl | testPathInjection.swift:39:22:39:30 | remoteUrl | provenance | | +| testPathInjection.swift:13:9:13:17 | remoteUrl | testPathInjection.swift:40:30:40:38 | remoteUrl | provenance | | +| testPathInjection.swift:13:9:13:17 | remoteUrl | testPathInjection.swift:41:51:41:59 | remoteUrl | provenance | | +| testPathInjection.swift:13:9:13:17 | remoteUrl | testPathInjection.swift:43:13:43:21 | remoteUrl | provenance | | +| testPathInjection.swift:13:9:13:17 | remoteUrl | testPathInjection.swift:46:34:46:42 | remoteUrl | provenance | | +| testPathInjection.swift:13:9:13:17 | remoteUrl | testPathInjection.swift:48:21:48:29 | remoteUrl | provenance | | +| testPathInjection.swift:13:9:13:17 | remoteUrl | testPathInjection.swift:49:34:49:42 | remoteUrl | provenance | | +| testPathInjection.swift:13:9:13:17 | remoteUrl | testPathInjection.swift:52:21:52:29 | remoteUrl | provenance | | +| testPathInjection.swift:13:9:13:17 | remoteUrl | testPathInjection.swift:53:34:53:42 | remoteUrl | provenance | | +| testPathInjection.swift:13:9:13:17 | remoteUrl | testPathInjection.swift:56:31:56:39 | remoteUrl | provenance | | +| testPathInjection.swift:13:9:13:17 | remoteUrl | testPathInjection.swift:57:60:57:68 | remoteUrl | provenance | | +| testPathInjection.swift:13:9:13:17 | remoteUrl | testPathInjection.swift:60:21:60:29 | remoteUrl | provenance | | +| testPathInjection.swift:13:9:13:17 | remoteUrl | testPathInjection.swift:61:34:61:42 | remoteUrl | provenance | | +| testPathInjection.swift:13:9:13:17 | remoteUrl | testPathInjection.swift:73:34:73:42 | remoteUrl | provenance | | +| testPathInjection.swift:13:9:13:17 | remoteUrl | testPathInjection.swift:93:26:93:34 | remoteUrl | provenance | | +| testPathInjection.swift:13:9:13:17 | remoteUrl | testPathInjection.swift:108:25:108:33 | remoteUrl | provenance | | +| testPathInjection.swift:13:9:13:17 | remoteUrl | testPathInjection.swift:135:38:135:46 | remoteUrl | provenance | | +| testPathInjection.swift:13:9:13:17 | remoteUrl | testPathInjection.swift:137:43:137:51 | remoteUrl | provenance | | +| testPathInjection.swift:13:9:13:17 | remoteUrl | testPathInjection.swift:141:22:141:30 | remoteUrl | provenance | | +| testPathInjection.swift:13:9:13:17 | remoteUrl | testPathInjection.swift:143:27:143:35 | remoteUrl | provenance | | +| testPathInjection.swift:13:33:13:44 | remoteString | testPathInjection.swift:13:9:13:17 | remoteUrl | provenance | | +| testPathInjection.swift:14:9:14:19 | remoteNsUrl | testPathInjection.swift:82:26:82:36 | remoteNsUrl | provenance | | +| testPathInjection.swift:14:9:14:19 | remoteNsUrl | testPathInjection.swift:84:52:84:62 | remoteNsUrl | provenance | | +| testPathInjection.swift:14:37:14:48 | remoteString | testPathInjection.swift:14:9:14:19 | remoteNsUrl | provenance | | +| testPathInjection.swift:97:46:97:57 | remoteString | testPathInjection.swift:97:46:97:76 | TypeCastExpr | provenance | | +| testPathInjection.swift:98:42:98:53 | remoteString | testPathInjection.swift:98:42:98:72 | TypeCastExpr | provenance | | +| testPathInjection.swift:102:39:102:50 | remoteString | testPathInjection.swift:102:15:102:51 | FilePath(...) | provenance | | +| testPathInjection.swift:105:39:105:50 | remoteString | testPathInjection.swift:105:15:105:51 | FilePath(...) | provenance | | +| testPathInjection.swift:141:22:141:30 | remoteUrl | testPathInjection.swift:141:5:141:18 | ... .fileURL | provenance | | +| testPathInjection.swift:143:27:143:35 | remoteUrl | testPathInjection.swift:143:5:143:23 | ... .seedFilePath | provenance | | +| testPathInjection.swift:149:9:149:18 | remoteData | testPathInjection.swift:151:5:151:14 | remoteData | provenance | | +| testPathInjection.swift:149:22:149:87 | Data(...) | testPathInjection.swift:149:9:149:18 | remoteData | provenance | | +| testPathInjection.swift:151:5:151:14 | remoteData | testPathInjection.swift:151:30:151:36 | [post] buffer2 | provenance | | +| testPathInjection.swift:151:30:151:36 | [post] buffer2 | testPathInjection.swift:156:24:156:30 | buffer2 | provenance | | +| testPathInjection.swift:173:9:173:19 | remoteData2 | testPathInjection.swift:174:26:174:36 | remoteData2 | provenance | | +| testPathInjection.swift:173:23:173:75 | Data(...) | testPathInjection.swift:173:9:173:19 | remoteData2 | provenance | | +| testPathInjection.swift:178:9:178:20 | remoteString | testPathInjection.swift:184:37:184:48 | remoteString | provenance | | +| testPathInjection.swift:178:9:178:20 | remoteString | testPathInjection.swift:186:33:186:44 | remoteString | provenance | | +| testPathInjection.swift:178:24:178:78 | String(...) | testPathInjection.swift:178:9:178:20 | remoteString | provenance | | +| testPathInjection.swift:193:9:193:20 | remoteString | testPathInjection.swift:198:54:198:65 | remoteString | provenance | | +| testPathInjection.swift:193:9:193:20 | remoteString | testPathInjection.swift:199:54:199:65 | remoteString | provenance | | +| testPathInjection.swift:193:9:193:20 | remoteString | testPathInjection.swift:200:28:200:39 | remoteString | provenance | | +| testPathInjection.swift:193:9:193:20 | remoteString | testPathInjection.swift:203:28:203:39 | remoteString | provenance | | +| testPathInjection.swift:193:9:193:20 | remoteString | testPathInjection.swift:209:50:209:61 | remoteString | provenance | | +| testPathInjection.swift:193:9:193:20 | remoteString | testPathInjection.swift:211:28:211:39 | remoteString | provenance | | +| testPathInjection.swift:193:9:193:20 | remoteString | testPathInjection.swift:215:32:215:43 | remoteString | provenance | | +| testPathInjection.swift:193:9:193:20 | remoteString | testPathInjection.swift:216:38:216:49 | remoteString | provenance | | +| testPathInjection.swift:193:9:193:20 | remoteString | testPathInjection.swift:217:45:217:56 | remoteString | provenance | | +| testPathInjection.swift:193:9:193:20 | remoteString | testPathInjection.swift:220:18:220:29 | remoteString | provenance | | +| testPathInjection.swift:193:9:193:20 | remoteString | testPathInjection.swift:233:35:233:46 | remoteString | provenance | | +| testPathInjection.swift:193:9:193:20 | remoteString | testPathInjection.swift:234:41:234:52 | remoteString | provenance | | +| testPathInjection.swift:193:24:193:78 | String(...) | testPathInjection.swift:193:9:193:20 | remoteString | provenance | | +| testPathInjection.swift:198:54:198:65 | remoteString | testPathInjection.swift:198:28:198:66 | ... .appendingPathComponent(...) | provenance | | +| testPathInjection.swift:199:28:199:66 | ... .appendingPathComponent(...) | Foundation.swiftinterface:18:74:18:77 | self | provenance | | +| testPathInjection.swift:199:28:199:66 | ... .appendingPathComponent(...) | testPathInjection.swift:199:28:199:93 | ... .appendingPathComponent(...) | provenance | | +| testPathInjection.swift:199:54:199:65 | remoteString | testPathInjection.swift:199:28:199:66 | ... .appendingPathComponent(...) | provenance | | +| testPathInjection.swift:200:28:200:39 | remoteString | testPathInjection.swift:201:28:201:29 | u1 | provenance | | +| testPathInjection.swift:209:24:209:62 | ... .appendingPathComponent(...) | testPathInjection.swift:209:24:209:63 | ... ! | provenance | | +| testPathInjection.swift:209:50:209:61 | remoteString | testPathInjection.swift:209:24:209:62 | ... .appendingPathComponent(...) | provenance | | +| testPathInjection.swift:211:9:211:10 | u4 | testPathInjection.swift:213:24:213:25 | u4 | provenance | | +| testPathInjection.swift:211:28:211:39 | remoteString | testPathInjection.swift:211:9:211:10 | u4 | provenance | | +| testPathInjection.swift:213:24:213:25 | u4 | testPathInjection.swift:213:24:213:52 | ... .appendingPathComponent(...) | provenance | | +| testPathInjection.swift:213:24:213:52 | ... .appendingPathComponent(...) | testPathInjection.swift:213:24:213:53 | ... ! | provenance | | +| testPathInjection.swift:220:5:220:6 | [post] s1 [pointee] | testPathInjection.swift:221:32:221:33 | s1 [pointee] | provenance | | +| testPathInjection.swift:220:5:220:14 | ... .pointee | testPathInjection.swift:220:5:220:6 | [post] s1 [pointee] | provenance | | +| testPathInjection.swift:220:18:220:29 | remoteString | testPathInjection.swift:220:5:220:14 | ... .pointee | provenance | | +| testPathInjection.swift:221:32:221:33 | s1 [pointee] | testPathInjection.swift:221:32:221:41 | ... .pointee | provenance | | +| testPathInjection.swift:254:9:254:20 | remoteString | testPathInjection.swift:256:25:256:36 | remoteString | provenance | | +| testPathInjection.swift:254:9:254:20 | remoteString | testPathInjection.swift:258:41:258:52 | remoteString | provenance | | +| testPathInjection.swift:254:9:254:20 | remoteString | testPathInjection.swift:260:38:260:49 | remoteString | provenance | | +| testPathInjection.swift:254:9:254:20 | remoteString | testPathInjection.swift:262:22:262:33 | remoteString | provenance | | +| testPathInjection.swift:254:24:254:78 | String(...) | testPathInjection.swift:254:9:254:20 | remoteString | provenance | | nodes -| testPathInjection.swift:16:74:16:77 | self | semmle.label | self | -| testPathInjection.swift:340:9:340:20 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:340:24:340:78 | String(...) | semmle.label | String(...) | -| testPathInjection.swift:341:9:341:17 | remoteUrl | semmle.label | remoteUrl | -| testPathInjection.swift:341:33:341:44 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:342:9:342:19 | remoteNsUrl | semmle.label | remoteNsUrl | -| testPathInjection.swift:342:37:342:48 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:346:24:346:32 | remoteUrl | semmle.label | remoteUrl | -| testPathInjection.swift:349:30:349:38 | remoteUrl | semmle.label | remoteUrl | -| testPathInjection.swift:350:22:350:30 | remoteUrl | semmle.label | remoteUrl | -| testPathInjection.swift:351:34:351:45 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:352:26:352:37 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:355:40:355:48 | remoteUrl | semmle.label | remoteUrl | -| testPathInjection.swift:356:44:356:55 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:358:13:358:21 | remoteUrl | semmle.label | remoteUrl | -| testPathInjection.swift:359:35:359:46 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:360:44:360:55 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:361:33:361:44 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:362:28:362:36 | remoteUrl | semmle.label | remoteUrl | -| testPathInjection.swift:363:40:363:51 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:364:35:364:46 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:365:23:365:31 | remoteUrl | semmle.label | remoteUrl | -| testPathInjection.swift:366:27:366:38 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:367:22:367:30 | remoteUrl | semmle.label | remoteUrl | -| testPathInjection.swift:368:30:368:38 | remoteUrl | semmle.label | remoteUrl | -| testPathInjection.swift:369:51:369:59 | remoteUrl | semmle.label | remoteUrl | -| testPathInjection.swift:371:13:371:21 | remoteUrl | semmle.label | remoteUrl | -| testPathInjection.swift:374:34:374:42 | remoteUrl | semmle.label | remoteUrl | -| testPathInjection.swift:376:21:376:29 | remoteUrl | semmle.label | remoteUrl | -| testPathInjection.swift:377:34:377:42 | remoteUrl | semmle.label | remoteUrl | -| testPathInjection.swift:378:25:378:36 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:379:37:379:48 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:380:21:380:29 | remoteUrl | semmle.label | remoteUrl | -| testPathInjection.swift:381:34:381:42 | remoteUrl | semmle.label | remoteUrl | -| testPathInjection.swift:382:25:382:36 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:383:37:383:48 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:384:31:384:39 | remoteUrl | semmle.label | remoteUrl | -| testPathInjection.swift:385:60:385:68 | remoteUrl | semmle.label | remoteUrl | -| testPathInjection.swift:386:35:386:46 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:387:60:387:71 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:388:21:388:29 | remoteUrl | semmle.label | remoteUrl | -| testPathInjection.swift:389:34:389:42 | remoteUrl | semmle.label | remoteUrl | -| testPathInjection.swift:390:25:390:36 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:391:37:391:48 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:392:50:392:61 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:393:35:393:46 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:395:17:395:28 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:396:41:396:52 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:397:33:397:44 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:398:38:398:49 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:399:51:399:62 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:400:43:400:54 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:401:34:401:42 | remoteUrl | semmle.label | remoteUrl | -| testPathInjection.swift:403:50:403:61 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:404:42:404:53 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:405:40:405:51 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:406:43:406:54 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:407:60:407:71 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:408:50:408:61 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:410:26:410:36 | remoteNsUrl | semmle.label | remoteNsUrl | -| testPathInjection.swift:412:52:412:62 | remoteNsUrl | semmle.label | remoteNsUrl | -| testPathInjection.swift:415:41:415:52 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:416:41:416:52 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:417:41:417:52 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:419:43:419:54 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:420:43:420:54 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:421:26:421:34 | remoteUrl | semmle.label | remoteUrl | -| testPathInjection.swift:422:30:422:41 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:424:59:424:70 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:425:46:425:57 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:425:46:425:76 | TypeCastExpr | semmle.label | TypeCastExpr | -| testPathInjection.swift:426:42:426:53 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:426:42:426:72 | TypeCastExpr | semmle.label | TypeCastExpr | -| testPathInjection.swift:430:15:430:51 | FilePath(...) | semmle.label | FilePath(...) | -| testPathInjection.swift:430:39:430:50 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:433:15:433:51 | FilePath(...) | semmle.label | FilePath(...) | -| testPathInjection.swift:433:39:433:50 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:436:25:436:33 | remoteUrl | semmle.label | remoteUrl | -| testPathInjection.swift:437:26:437:37 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:441:28:441:39 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:443:32:443:43 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:445:33:445:44 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:447:40:447:51 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:456:15:456:26 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:477:9:477:18 | remoteData | semmle.label | remoteData | -| testPathInjection.swift:477:22:477:87 | Data(...) | semmle.label | Data(...) | -| testPathInjection.swift:479:5:479:14 | remoteData | semmle.label | remoteData | -| testPathInjection.swift:479:30:479:36 | [post] buffer2 | semmle.label | [post] buffer2 | -| testPathInjection.swift:482:22:482:33 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:484:24:484:30 | buffer2 | semmle.label | buffer2 | -| testPathInjection.swift:486:25:486:36 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:498:49:498:60 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:501:9:501:19 | remoteData2 | semmle.label | remoteData2 | -| testPathInjection.swift:501:23:501:75 | Data(...) | semmle.label | Data(...) | -| testPathInjection.swift:502:26:502:36 | remoteData2 | semmle.label | remoteData2 | -| testPathInjection.swift:506:9:506:20 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:506:24:506:78 | String(...) | semmle.label | String(...) | -| testPathInjection.swift:512:37:512:48 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:514:33:514:44 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:521:9:521:20 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:521:24:521:78 | String(...) | semmle.label | String(...) | -| testPathInjection.swift:526:28:526:66 | ... .appendingPathComponent(...) | semmle.label | ... .appendingPathComponent(...) | -| testPathInjection.swift:526:54:526:65 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:527:28:527:66 | ... .appendingPathComponent(...) | semmle.label | ... .appendingPathComponent(...) | -| testPathInjection.swift:527:28:527:93 | ... .appendingPathComponent(...) | semmle.label | ... .appendingPathComponent(...) | -| testPathInjection.swift:527:54:527:65 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:528:28:528:39 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:529:28:529:29 | u1 | semmle.label | u1 | -| testPathInjection.swift:531:28:531:39 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:537:24:537:62 | ... .appendingPathComponent(...) | semmle.label | ... .appendingPathComponent(...) | -| testPathInjection.swift:537:24:537:63 | ... ! | semmle.label | ... ! | -| testPathInjection.swift:537:50:537:61 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:539:9:539:10 | u4 | semmle.label | u4 | -| testPathInjection.swift:539:28:539:39 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:541:24:541:25 | u4 | semmle.label | u4 | -| testPathInjection.swift:541:24:541:52 | ... .appendingPathComponent(...) | semmle.label | ... .appendingPathComponent(...) | -| testPathInjection.swift:541:24:541:53 | ... ! | semmle.label | ... ! | -| testPathInjection.swift:543:32:543:43 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:544:38:544:49 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:545:45:545:56 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:548:5:548:6 | [post] s1 [pointee] | semmle.label | [post] s1 [pointee] | -| testPathInjection.swift:548:5:548:14 | ... .pointee | semmle.label | ... .pointee | -| testPathInjection.swift:548:18:548:29 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:549:32:549:33 | s1 [pointee] | semmle.label | s1 [pointee] | -| testPathInjection.swift:549:32:549:41 | ... .pointee | semmle.label | ... .pointee | -| testPathInjection.swift:561:35:561:46 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:562:41:562:52 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:582:9:582:20 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:582:24:582:78 | String(...) | semmle.label | String(...) | -| testPathInjection.swift:584:25:584:36 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:586:41:586:52 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:588:38:588:49 | remoteString | semmle.label | remoteString | -| testPathInjection.swift:590:22:590:33 | remoteString | semmle.label | remoteString | +| Foundation.swiftinterface:18:74:18:77 | self | semmle.label | self | +| testPathInjection.swift:12:9:12:20 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:12:24:12:78 | String(...) | semmle.label | String(...) | +| testPathInjection.swift:13:9:13:17 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:13:33:13:44 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:14:9:14:19 | remoteNsUrl | semmle.label | remoteNsUrl | +| testPathInjection.swift:14:37:14:48 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:18:24:18:32 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:21:30:21:38 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:22:22:22:30 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:23:34:23:45 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:24:26:24:37 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:27:40:27:48 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:28:44:28:55 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:30:13:30:21 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:31:35:31:46 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:32:44:32:55 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:33:33:33:44 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:34:28:34:36 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:35:40:35:51 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:36:35:36:46 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:37:23:37:31 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:38:27:38:38 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:39:22:39:30 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:40:30:40:38 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:41:51:41:59 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:43:13:43:21 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:46:34:46:42 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:48:21:48:29 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:49:34:49:42 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:50:25:50:36 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:51:37:51:48 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:52:21:52:29 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:53:34:53:42 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:54:25:54:36 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:55:37:55:48 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:56:31:56:39 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:57:60:57:68 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:58:35:58:46 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:59:60:59:71 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:60:21:60:29 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:61:34:61:42 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:62:25:62:36 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:63:37:63:48 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:64:50:64:61 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:65:35:65:46 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:67:17:67:28 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:68:41:68:52 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:69:33:69:44 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:70:38:70:49 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:71:51:71:62 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:72:43:72:54 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:73:34:73:42 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:75:50:75:61 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:76:42:76:53 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:77:40:77:51 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:78:43:78:54 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:79:60:79:71 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:80:50:80:61 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:82:26:82:36 | remoteNsUrl | semmle.label | remoteNsUrl | +| testPathInjection.swift:84:52:84:62 | remoteNsUrl | semmle.label | remoteNsUrl | +| testPathInjection.swift:87:41:87:52 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:88:41:88:52 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:89:41:89:52 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:91:43:91:54 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:92:43:92:54 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:93:26:93:34 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:94:30:94:41 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:96:59:96:70 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:97:46:97:57 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:97:46:97:76 | TypeCastExpr | semmle.label | TypeCastExpr | +| testPathInjection.swift:98:42:98:53 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:98:42:98:72 | TypeCastExpr | semmle.label | TypeCastExpr | +| testPathInjection.swift:102:15:102:51 | FilePath(...) | semmle.label | FilePath(...) | +| testPathInjection.swift:102:39:102:50 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:105:15:105:51 | FilePath(...) | semmle.label | FilePath(...) | +| testPathInjection.swift:105:39:105:50 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:108:25:108:33 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:109:26:109:37 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:113:28:113:39 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:115:32:115:43 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:117:33:117:44 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:119:40:119:51 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:121:38:121:49 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:123:38:123:49 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:125:38:125:49 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:128:15:128:26 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:135:38:135:46 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:137:43:137:51 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:141:5:141:18 | ... .fileURL | semmle.label | ... .fileURL | +| testPathInjection.swift:141:22:141:30 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:143:5:143:23 | ... .seedFilePath | semmle.label | ... .seedFilePath | +| testPathInjection.swift:143:27:143:35 | remoteUrl | semmle.label | remoteUrl | +| testPathInjection.swift:149:9:149:18 | remoteData | semmle.label | remoteData | +| testPathInjection.swift:149:22:149:87 | Data(...) | semmle.label | Data(...) | +| testPathInjection.swift:151:5:151:14 | remoteData | semmle.label | remoteData | +| testPathInjection.swift:151:30:151:36 | [post] buffer2 | semmle.label | [post] buffer2 | +| testPathInjection.swift:154:22:154:33 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:156:24:156:30 | buffer2 | semmle.label | buffer2 | +| testPathInjection.swift:158:25:158:36 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:169:49:169:60 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:170:49:170:60 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:172:25:172:36 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:173:9:173:19 | remoteData2 | semmle.label | remoteData2 | +| testPathInjection.swift:173:23:173:75 | Data(...) | semmle.label | Data(...) | +| testPathInjection.swift:174:26:174:36 | remoteData2 | semmle.label | remoteData2 | +| testPathInjection.swift:178:9:178:20 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:178:24:178:78 | String(...) | semmle.label | String(...) | +| testPathInjection.swift:184:37:184:48 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:186:33:186:44 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:193:9:193:20 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:193:24:193:78 | String(...) | semmle.label | String(...) | +| testPathInjection.swift:198:28:198:66 | ... .appendingPathComponent(...) | semmle.label | ... .appendingPathComponent(...) | +| testPathInjection.swift:198:54:198:65 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:199:28:199:66 | ... .appendingPathComponent(...) | semmle.label | ... .appendingPathComponent(...) | +| testPathInjection.swift:199:28:199:93 | ... .appendingPathComponent(...) | semmle.label | ... .appendingPathComponent(...) | +| testPathInjection.swift:199:54:199:65 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:200:28:200:39 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:201:28:201:29 | u1 | semmle.label | u1 | +| testPathInjection.swift:203:28:203:39 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:209:24:209:62 | ... .appendingPathComponent(...) | semmle.label | ... .appendingPathComponent(...) | +| testPathInjection.swift:209:24:209:63 | ... ! | semmle.label | ... ! | +| testPathInjection.swift:209:50:209:61 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:211:9:211:10 | u4 | semmle.label | u4 | +| testPathInjection.swift:211:28:211:39 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:213:24:213:25 | u4 | semmle.label | u4 | +| testPathInjection.swift:213:24:213:52 | ... .appendingPathComponent(...) | semmle.label | ... .appendingPathComponent(...) | +| testPathInjection.swift:213:24:213:53 | ... ! | semmle.label | ... ! | +| testPathInjection.swift:215:32:215:43 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:216:38:216:49 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:217:45:217:56 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:220:5:220:6 | [post] s1 [pointee] | semmle.label | [post] s1 [pointee] | +| testPathInjection.swift:220:5:220:14 | ... .pointee | semmle.label | ... .pointee | +| testPathInjection.swift:220:18:220:29 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:221:32:221:33 | s1 [pointee] | semmle.label | s1 [pointee] | +| testPathInjection.swift:221:32:221:41 | ... .pointee | semmle.label | ... .pointee | +| testPathInjection.swift:233:35:233:46 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:234:41:234:52 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:254:9:254:20 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:254:24:254:78 | String(...) | semmle.label | String(...) | +| testPathInjection.swift:256:25:256:36 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:258:41:258:52 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:260:38:260:49 | remoteString | semmle.label | remoteString | +| testPathInjection.swift:262:22:262:33 | remoteString | semmle.label | remoteString | subpaths -| testPathInjection.swift:527:28:527:66 | ... .appendingPathComponent(...) | testPathInjection.swift:16:74:16:77 | self | testPathInjection.swift:16:74:16:77 | self | testPathInjection.swift:527:28:527:93 | ... .appendingPathComponent(...) | +| testPathInjection.swift:199:28:199:66 | ... .appendingPathComponent(...) | Foundation.swiftinterface:18:74:18:77 | self | Foundation.swiftinterface:18:74:18:77 | self | testPathInjection.swift:199:28:199:93 | ... .appendingPathComponent(...) | diff --git a/unified/ql/test/query-tests/security/CWE-022/PathInjection/RealmSwift.swiftinterface b/unified/ql/test/query-tests/security/CWE-022/PathInjection/RealmSwift.swiftinterface new file mode 100644 index 000000000000..adff3f2c53c1 --- /dev/null +++ b/unified/ql/test/query-tests/security/CWE-022/PathInjection/RealmSwift.swiftinterface @@ -0,0 +1,27 @@ +// swift-interface-format-version: 1.0 +// swift-module-flags: -module-name RealmSwift +// Stubs for testing. + +class Realm { +} + +extension Realm { + struct Configuration { + init( + fileURL: URL? = URL(fileURLWithPath: "defaultFile", isDirectory: false), + inMemoryIdentifier: String? = nil, + syncConfiguration: Int = 0, + encryptionKey: Data? = nil, + readOnly: Bool = false, + schemaVersion: UInt64 = 0, + migrationBlock: Int = 0, + deleteRealmIfMigrationNeeded: Bool = false, + shouldCompactOnLaunch: Bool = false, + objectTypes: Int = 0, + seedFilePath: URL? = nil + ) {} + + var fileURL: URL? + var seedFilePath: URL? + } +} diff --git a/unified/ql/test/query-tests/security/CWE-022/PathInjection/SQLite.swiftinterface b/unified/ql/test/query-tests/security/CWE-022/PathInjection/SQLite.swiftinterface new file mode 100644 index 000000000000..5b0127a60762 --- /dev/null +++ b/unified/ql/test/query-tests/security/CWE-022/PathInjection/SQLite.swiftinterface @@ -0,0 +1,16 @@ +// swift-interface-format-version: 1.0 +// swift-module-flags: -module-name SQLite +// Stubs for testing. + +enum URIQueryParameter { +} + +class Connection { + enum Location { + case inMemory + case uri(String, parameters: [URIQueryParameter] = []) + } + + init(_ location: Location = .inMemory, readonly: Bool = false) throws {} + convenience init(_ filename: String, readonly: Bool = false) throws { try self.init() } +} diff --git a/unified/ql/test/query-tests/security/CWE-022/PathInjection/SQLite3.swiftinterface b/unified/ql/test/query-tests/security/CWE-022/PathInjection/SQLite3.swiftinterface new file mode 100644 index 000000000000..dc18bf0223ef --- /dev/null +++ b/unified/ql/test/query-tests/security/CWE-022/PathInjection/SQLite3.swiftinterface @@ -0,0 +1,22 @@ +// swift-interface-format-version: 1.0 +// swift-module-flags: -module-name SQLite3 +// Stubs for testing. + +func sqlite3_open( + _ filename: UnsafePointer?, + _ ppDb: UnsafeMutablePointer? +) -> Int32 { return 0 } + +func sqlite3_open16( + _ filename: UnsafeRawPointer?, + _ ppDb: UnsafeMutablePointer? +) -> Int32 { return 0 } + +func sqlite3_open_v2( + _ filename: UnsafePointer?, + _ ppDb: UnsafeMutablePointer?, + _ flags: Int32, + _ zVfs: UnsafePointer? +) -> Int32 { return 0 } + +var sqlite3_temp_directory: UnsafeMutablePointer? diff --git a/unified/ql/test/query-tests/security/CWE-022/PathInjection/System.swiftinterface b/unified/ql/test/query-tests/security/CWE-022/PathInjection/System.swiftinterface new file mode 100644 index 000000000000..eee340191955 --- /dev/null +++ b/unified/ql/test/query-tests/security/CWE-022/PathInjection/System.swiftinterface @@ -0,0 +1,30 @@ +// swift-interface-format-version: 1.0 +// swift-module-flags: -module-name System +// Stubs for testing. + +struct FilePath: ExpressibleByStringLiteral { + typealias StringLiteralType = String + init(stringLiteral: String) {} + func lexicallyNormalized() -> FilePath { return "" } + func starts(with: FilePath) -> Bool { return false } +} + +struct FileDescriptor { + struct AccessMode: RawRepresentable { + static let readOnly = AccessMode(rawValue: 0) + let rawValue: UInt8 + init(rawValue: UInt8) { self.rawValue = rawValue } + } + + struct OpenOptions: RawRepresentable { + static let append = OpenOptions(rawValue: 0) + let rawValue: UInt8 + init(rawValue: UInt8) { self.rawValue = rawValue } + } +} + +struct FilePermissions: RawRepresentable { + static let ownerRead = FilePermissions(rawValue: 0) + let rawValue: UInt8 + init(rawValue: UInt8) { self.rawValue = rawValue } +} diff --git a/unified/ql/test/query-tests/security/CWE-022/PathInjection/testPathInjection.swift b/unified/ql/test/query-tests/security/CWE-022/PathInjection/testPathInjection.swift index d9cb5ecaaa30..02321b0d2ef5 100644 --- a/unified/ql/test/query-tests/security/CWE-022/PathInjection/testPathInjection.swift +++ b/unified/ql/test/query-tests/security/CWE-022/PathInjection/testPathInjection.swift @@ -1,338 +1,10 @@ -// --- stubs --- - -struct URL { - enum DirectoryHint { - case inferFromPath - } - - init?(string: String) {} - init(fileURLWithPath path: String, isDirectory: Bool) {} - init( - filePath path: String, directoryHint: URL.DirectoryHint = .inferFromPath, - relativeTo base: URL? = nil - ) {} - - mutating func appendPathComponent(_ pathComponent: String) {} - func appendingPathComponent(_ pathComponent: String) -> URL { return self } -} - -class NSURL { - init?(string: String) {} - - func appendingPathComponent(_ pathComponent: String) -> URL? { return nil } - - var filePathURL: URL? { URL(string: "") } -} - -extension StringProtocol { - func completePath( - into outputName: UnsafeMutablePointer? = nil, - caseSensitive: Bool, - matchesInto outputArray: UnsafeMutablePointer<[String]>? = nil, - filterTypes: [String]? = nil - ) -> Int { 0 } -} - -extension String { - struct Encoding { - static let utf8 = Encoding() - } - - init(contentsOf: URL) { - let data = "" - self.init(data) - } - - init(contentsOfFile path: String) throws { - self.init("") - } - - init(contentsOfFile path: String, encoding enc: String.Encoding) throws { - self.init("") - } - - init(contentsOfFile path: String, usedEncoding: inout String.Encoding) throws { - self.init("") - } -} - -class NSString { - init() {} - init(string aString: String) {} - convenience init(contentsOfFile path: String, encoding enc: UInt) throws { self.init() } - convenience init(contentsOfFile path: String, usedEncoding enc: UnsafeMutablePointer?) - throws - { self.init() } - - func write(toFile: String, atomically: Bool, encoding: UInt) {} - func write(to: URL, atomically: Bool, encoding: UInt) {} - - var utf8String: UnsafePointer? { return nil } -} -protocol DataProtocol {} -class Data: DataProtocol { - struct ReadingOptions: OptionSet { let rawValue: Int } - struct WritingOptions: OptionSet { let rawValue: Int } - - init(_ elements: S) { count = 0 } - init(contentsOf: URL, options: ReadingOptions) { count = 0 } - - func copyBytes(to: UnsafeMutablePointer, count: Int) {} - - func write(to: URL, options: Data.WritingOptions = []) {} - - var count: Int -} - -class NSData { - init() {} - init?(contentsOfFile path: String) {} - init?(contentsOfMappedFile path: String) {} - init?(contentsOf url: URL) {} - class func dataWithContentsOfMappedFile(_ path: String) -> Any? { return nil } - - struct WritingOptions: OptionSet { let rawValue: Int } - func write(to: URL, atomically: Bool) -> Bool { return false } - func write(to: URL, options: NSData.WritingOptions) {} - func write(toFile: String, atomically: Bool) -> Bool { return false } - func write(toFile: String, options: NSData.WritingOptions) {} -} - -class NSKeyedUnarchiver { - func unarchiveObject(withFile: String) -> Any? { return nil } -} - -struct URLResourceKey {} - -struct FileAttributeKey: Hashable {} - -struct ObjCBool {} - -struct AutoreleasingUnsafeMutablePointer {} - -struct FilePath: ExpressibleByStringLiteral { - typealias StringLiteralType = String - init(stringLiteral: String) {} - func lexicallyNormalized() -> FilePath { return "" } - func starts(with: FilePath) -> Bool { return false } -} - -class FileManager { - class DirectoryEnumerator {} - struct DirectoryEnumerationOptions: OptionSet { let rawValue: Int } - struct ItemReplacementOptions: OptionSet { let rawValue: Int } - struct UnmountOptions: OptionSet { let rawValue: Int } - struct SearchPathDomainMask {} - enum SearchPathDirectory: UInt { case none } - enum URLRelationship: Int { case none } - - func contentsOfDirectory( - at: URL, includingPropertiesForKeys: [URLResourceKey]?, - options: FileManager.DirectoryEnumerationOptions - ) -> [URL] { return [] } - func contentsOfDirectory(atPath: String) -> [String] { return [] } - func enumerator( - at: URL, includingPropertiesForKeys: [URLResourceKey]?, - options: FileManager.DirectoryEnumerationOptions, errorHandler: ((URL, Error) -> Bool)? - ) -> FileManager.DirectoryEnumerator? { return nil } - func enumerator(atPath: String) -> FileManager.DirectoryEnumerator? { return nil } - func subpathsOfDirectory(atPath: String) -> [String] { return [] } - func subpaths(atPath: String) -> [String]? { return nil } - func createDirectory( - at: URL, withIntermediateDirectories: Bool, attributes: [FileAttributeKey: Any]? - ) {} - func createDirectory( - atPath: String, withIntermediateDirectories: Bool, attributes: [FileAttributeKey: Any]? - ) {} - func createFile(atPath: String, contents: Data?, attributes: [FileAttributeKey: Any]?) -> Bool { - return false - } - func removeItem(at: URL) {} - func removeItem(atPath: String) {} - func trashItem(at: URL, resultingItemURL: AutoreleasingUnsafeMutablePointer?) {} - func replaceItemAt( - _: URL, withItemAt: URL, backupItemName: String?, - options: FileManager.ItemReplacementOptions - ) -> URL? { return nil } - func replaceItem( - at: URL, withItemAt: URL, backupItemName: String?, - options: FileManager.ItemReplacementOptions, - resultingItemURL: AutoreleasingUnsafeMutablePointer? - ) {} - func copyItem(at: URL, to: URL) {} - func copyItem(atPath: String, toPath: String) {} - func moveItem(at: URL, to: URL) {} - func moveItem(atPath: String, toPath: String) {} - func createSymbolicLink(at: URL, withDestinationURL: URL) {} - func createSymbolicLink(atPath: String, withDestinationPath: String) {} - func linkItem(at: URL, to: URL) {} - func linkItem(atPath: String, toPath: String) {} - func destinationOfSymbolicLink(atPath: String) -> String { return "" } - func fileExists(atPath: String) -> Bool { return false } - func fileExists(atPath: String, isDirectory: UnsafeMutablePointer?) -> Bool { - return false - } - func setAttributes(_: [FileAttributeKey: Any], ofItemAtPath: String) {} - func contents(atPath: String) -> Data? { return nil } - func contentsEqual(atPath: String, andPath: String) -> Bool { return false } - func changeCurrentDirectoryPath(_: String) -> Bool { return false } - func unmountVolume( - at: URL, options: FileManager.UnmountOptions, completionHandler: (Error?) -> Void - ) {} - // Deprecated methods - func fileAttributes(atPath path: String, traverseLink yorn: Bool) -> [AnyHashable: Any]? { nil } - func changeFileAttributes(_: [AnyHashable: Any], atPath: String) -> Bool { return false } - func attributesOfItem(atPath path: String) throws -> [FileAttributeKey: Any] { return [:] } - func directoryContents(atPath: String) -> [Any]? { return nil } - func createDirectory(atPath: String, attributes: [AnyHashable: Any]) -> Bool { return false } - func createSymbolicLink(atPath: String, pathContent: String) -> Bool { return false } - func pathContentOfSymbolicLink(atPath: String) -> String? { return nil } - func replaceItemAtURL( - originalItemURL: NSURL, withItemAtURL: NSURL, backupItemName: String?, - options: FileManager.ItemReplacementOptions - ) -> NSURL? { return nil } -} - -struct FileDescriptor { - struct AccessMode: RawRepresentable { - static let readOnly = AccessMode(rawValue: 0) - let rawValue: UInt8 - init(rawValue: UInt8) { self.rawValue = rawValue } - } - - struct OpenOptions: RawRepresentable { - static let append = OpenOptions(rawValue: 0) - let rawValue: UInt8 - init(rawValue: UInt8) { self.rawValue = rawValue } - } -} - -struct FilePermissions: RawRepresentable { - static let ownerRead = FilePermissions(rawValue: 0) - let rawValue: UInt8 - init(rawValue: UInt8) { self.rawValue = rawValue } -} - -class ArchiveByteStream { - static func fileStream(fd: FileDescriptor, automaticClose: Bool = true) -> ArchiveByteStream? { - return nil - } - static func withFileStream( - fd: FileDescriptor, automaticClose: Bool = true, _ body: (ArchiveByteStream) -> E - ) -> E { return body(ArchiveByteStream()) } - static func fileStream( - path: FilePath, mode: FileDescriptor.AccessMode, options: FileDescriptor.OpenOptions, - permissions: FilePermissions - ) -> ArchiveByteStream? { return nil } - static func withFileStream( - path: FilePath, mode: FileDescriptor.AccessMode, options: FileDescriptor.OpenOptions, - permissions: FilePermissions, _ body: (ArchiveByteStream) -> E - ) -> E { return body(ArchiveByteStream()) } -} - -class Bundle { - init?(url: URL) {} - init?(path: String) {} -} - -class KeyPath { -} - -class NSSortDescriptor { - init(key: String?, ascending: Bool) {} - convenience init(keyPath: KeyPath, ascending: Bool) { - self.init(key: nil, ascending: ascending) - } -} - -// GRDB - -struct Configuration {} - -class Database { - init(path: String, description: String, configuration: Configuration) {} -} - -class DatabasePool { - init(path: String, configuration: Configuration) {} -} - -class DatabaseQueue { - init(path: String, configuration: Configuration) {} -} - -class DatabaseSnapshotPool { - init(path: String, configuration: Configuration) {} -} - -class SerializedDatabase { - init( - path: String, configuration: Configuration = Configuration(), defaultLabel: String, - purpose: String? = nil - ) {} -} - -// Realm - -class Realm { -} - -extension Realm { - struct Configuration { - init( - fileURL: URL? = URL(fileURLWithPath: "defaultFile", isDirectory: false), - inMemoryIdentifier: String? = nil, - syncConfiguration: Int = 0, - encryptionKey: Data? = nil, - readOnly: Bool = false, - schemaVersion: UInt64 = 0, - migrationBlock: Int = 0, - deleteRealmIfMigrationNeeded: Bool = false, - shouldCompactOnLaunch: Bool = false, - objectTypes: Int = 0, - seedFilePath: URL? = nil - ) {} - - var fileURL: URL? - var seedFilePath: URL? - } -} - -// sqlite3 - -func sqlite3_open( - _ filename: UnsafePointer?, - _ ppDb: UnsafeMutablePointer? -) -> Int32 { return 0 } - -func sqlite3_open16( - _ filename: UnsafeRawPointer?, - _ ppDb: UnsafeMutablePointer? -) -> Int32 { return 0 } - -func sqlite3_open_v2( - _ filename: UnsafePointer?, - _ ppDb: UnsafeMutablePointer?, - _ flags: Int32, - _ zVfs: UnsafePointer? -) -> Int32 { return 0 } - -var sqlite3_temp_directory: UnsafeMutablePointer? - -// SQLite.swift - -enum URIQueryParameter { -} - -class Connection { - enum Location { - case inMemory - case uri(String, parameters: [URIQueryParameter] = []) - } - - init(_ location: Location = .inMemory, readonly: Bool = false) throws {} - convenience init(_ filename: String, readonly: Bool = false) throws { try self.init() } -} +import AppleArchive +import Foundation +import GRDB +import RealmSwift +import SQLite +import SQLite3 +import System // --- tests --- @@ -446,11 +118,11 @@ func test(buffer1: UnsafeMutablePointer, buffer2: UnsafeMutablePointer, buffer2: UnsafeMutablePointer, buffer2: UnsafeMutablePointer Process { - return Process() - } - - class func run(_ url: URL, arguments: [String], terminationHandler: (@Sendable (Process) -> Void)? = nil) throws -> Process { - return Process() - } -} - -extension String { - init(contentsOf url: URL) throws { - self.init("") - } -} - -class NSUserScriptTask : NSObject { - typealias CompletionHandler = @Sendable (Error?) -> Void - - init(url: URL) throws {} - func execute(completionHandler handler: NSUserScriptTask.CompletionHandler? = nil) { } -} - -class NSUserUnixTask : NSUserScriptTask { - func execute(withArguments arguments: [String]?, completionHandler handler: NSUserScriptTask.CompletionHandler? = nil) { } -} - -protocol NSSecureCoding { -} - -class NSUserAutomatorTask : NSUserScriptTask { - func execute(withInput input: NSSecureCoding?, completionHandler handler: NSUserScriptTask.CompletionHandler? = nil) { } - - var variables: [String: Any]? { get { return nil } set { } } -} - -class FileManager : NSObject { - class var `default`: FileManager { get { return 0 as! FileManager } } - - func contentsOfDirectory(atPath path: String) throws -> [String] { [] } -} +import Foundation // --- tests --- @@ -117,24 +58,24 @@ func testCommandInjectionMore(mySafeString: String) { try! task2.run() let task3 = Process() - task3.executableURL = URL(string: userControlledString)! // $ MISSING: Alert + task3.executableURL = URL(string: userControlledString)! // $ Alert task3.arguments = ["abc", userControlledString] // $ MISSING: Alert try! task3.run() let task4 = Process() - task4.executableURL = URL(fileURLWithPath: userControlledString) // $ MISSING: Alert - task4.executableURL = URL(string: userControlledString)! // $ MISSING: Alert + task4.executableURL = URL(fileURLWithPath: userControlledString) // $ Alert + task4.executableURL = URL(string: userControlledString)! // $ Alert task4.arguments = ["abc", "def" + userControlledString] // $ MISSING: Alert try! task4.run() let task5 = mkProcess() - task5?.executableURL = URL(fileURLWithPath: userControlledString) // $ MISSING: Alert + task5?.executableURL = URL(fileURLWithPath: userControlledString) // $ Alert task5?.arguments = [userControlledString] // $ MISSING: Alert try! task5?.run() let task6 = MyProcess() - task6.executableURL = URL(fileURLWithPath: userControlledString) // $ MISSING: Alert - task6.executableURL = URL(string: userControlledString)! // $ MISSING: Alert + task6.executableURL = URL(fileURLWithPath: userControlledString) // $ Alert + task6.executableURL = URL(string: userControlledString)! // $ Alert task6.arguments = [userControlledString] // $ MISSING: Alert task6.setArguments([userControlledString]) // BAD (expected inside setArguments; currently missing) task6.harmlessField = userControlledString // GOOD diff --git a/unified/ql/test/query-tests/security/CWE-078/CommandInjection/Foundation.swiftinterface b/unified/ql/test/query-tests/security/CWE-078/CommandInjection/Foundation.swiftinterface new file mode 100644 index 000000000000..a24021d1cab5 --- /dev/null +++ b/unified/ql/test/query-tests/security/CWE-078/CommandInjection/Foundation.swiftinterface @@ -0,0 +1,61 @@ +// swift-interface-format-version: 1.0 +// swift-module-flags: -module-name Foundation +// Stubs for testing. + +struct URL +{ + init?(string: String) {} + init(fileURLWithPath: String) {} +} + +class NSObject { +} + +class Process : NSObject { + var launchPath: String? { get { nil } set {} } + var arguments: [String]? { get { nil } set {} } + func launch() {} + + var executableURL: URL? { get { nil } set {} } + func run() throws {} + + class func launchedProcess(launchPath path: String, arguments: [String]) -> Process { + return Process() + } + + class func run(_ url: URL, arguments: [String], terminationHandler: (@Sendable (Process) -> Void)? = nil) throws -> Process { + return Process() + } +} + +extension String { + init(contentsOf url: URL) throws { + self.init("") + } +} + +class NSUserScriptTask : NSObject { + typealias CompletionHandler = @Sendable (Error?) -> Void + + init(url: URL) throws {} + func execute(completionHandler handler: NSUserScriptTask.CompletionHandler? = nil) { } +} + +class NSUserUnixTask : NSUserScriptTask { + func execute(withArguments arguments: [String]?, completionHandler handler: NSUserScriptTask.CompletionHandler? = nil) { } +} + +protocol NSSecureCoding { +} + +class NSUserAutomatorTask : NSUserScriptTask { + func execute(withInput input: NSSecureCoding?, completionHandler handler: NSUserScriptTask.CompletionHandler? = nil) { } + + var variables: [String: Any]? { get { return nil } set { } } +} + +class FileManager : NSObject { + class var `default`: FileManager { get { return 0 as! FileManager } } + + func contentsOfDirectory(atPath path: String) throws -> [String] { [] } +} diff --git a/unified/scripts/generate-type-models.sh b/unified/scripts/generate-type-models.sh new file mode 100755 index 000000000000..6ace187a3c85 --- /dev/null +++ b/unified/scripts/generate-type-models.sh @@ -0,0 +1,85 @@ +#!/bin/bash +# Generates type models for the unified analysis from `.swiftinterface` files. +# +# Usage: +# scripts/generate-type-models.sh +# scripts/generate-type-models.sh --sdk ... +# +# The first form uses all `.swiftinterface` files found in . Each file should be +# named `.swiftinterface` or be placed in a `.swiftmodule` folder. +# +# The second form copies the interfaces of the given modules from the SDK reported by +# `xcrun --show-sdk-path` into a temporary folder (macOS only). +# +# Only types that are relevant to the existing source, sink, and summary models are exported. +# The output is written to ql/lib/ext/generated/swift-type-models.model.yml. +# +# The extractor pack must be built first, with scripts/create-extractor-pack.sh. +set -euo pipefail + +cd "$(dirname "$0")/.." +UNIFIED_DIR="$(pwd)" +REPO_ROOT="$(cd .. && pwd)" + +OUTPUT="$UNIFIED_DIR/ql/lib/ext/generated/swift-type-models.model.yml" +WORK_DIR="$(mktemp -d)" +trap 'rm -rf "$WORK_DIR"' EXIT + +if [[ "${1:-}" == "--sdk" ]]; then + shift + SDK="$(xcrun --show-sdk-path)" + SRC_DIR="$WORK_DIR/src" + mkdir -p "$SRC_DIR" + for module in "$@"; do + file="$(find -L "$SDK" -path "*/$module.swiftmodule/*" -name 'arm64e-apple-macos.swiftinterface' 2>/dev/null | head -n 1)" + if [[ -z "$file" ]]; then + file="$(find -L "$SDK" -path "*/$module.swiftmodule/*" -name 'arm64e-apple-ios-macabi.swiftinterface' 2>/dev/null | head -n 1)" + fi + if [[ -z "$file" ]]; then + echo "Could not find interface for module $module" >&2 + exit 1 + fi + cp "$file" "$SRC_DIR/$module.swiftinterface" + done +elif [[ $# -eq 1 ]]; then + SRC_DIR="$(cd "$1" && pwd)" +else + sed -n '2,17p' "$0" | sed 's/^# \{0,1\}//' + exit 1 +fi + +codeql database create "$WORK_DIR/db" --overwrite --language=unified \ + --search-path "$UNIFIED_DIR/extractor-pack" --source-root "$SRC_DIR" + +codeql query run --additional-packs="$REPO_ROOT" -d "$WORK_DIR/db" -o "$WORK_DIR/results.bqrs" \ + "$UNIFIED_DIR/ql/src/utils/modelgenerator/GenerateTypeModels.ql" + +for result_set in typeModel summaryModel; do + codeql bqrs decode --format=json --result-set="$result_set" "$WORK_DIR/results.bqrs" \ + > "$WORK_DIR/$result_set.json" +done + +mkdir -p "$UNIFIED_DIR/ql/lib/ext/generated" +python3 - "$WORK_DIR" "$OUTPUT" <<'PYTHON' +import json, sys + +work_dir, output = sys.argv[1:3] +lines = [ + "# Generated by unified/scripts/generate-type-models.sh. Do not edit by hand.", + "extensions:", +] +for extensible in ["typeModel", "summaryModel"]: + rows = json.load(open(f"{work_dir}/{extensible}.json")).get("tuples", []) + rows = sorted(set(tuple(row) for row in rows)) + if not rows: + continue + lines += [ + " - addsTo:", + " pack: codeql/unified-all", + f" extensible: {extensible}", + " data:", + ] + lines += [" - " + json.dumps(list(row)) for row in rows] +open(output, "w").write("\n".join(lines) + "\n") +print(f"Wrote {output}") +PYTHON