|
1 | 1 | import swift
|
2 | 2 | private import codeql.swift.dataflow.ExternalFlow
|
3 | 3 |
|
| 4 | +private class DataSources extends SourceModelCsv { |
| 5 | + override predicate row(string row) { |
| 6 | + row = ";Data;true;init(contentsOf:options:);;;ReturnValue;remote" |
| 7 | + } |
| 8 | +} |
| 9 | + |
4 | 10 | private class DataSummaries extends SummaryModelCsv {
|
5 |
| - override predicate row(string row) { row = ";Data;true;init(_:);;;Argument[0];ReturnValue;taint" } |
| 11 | + override predicate row(string row) { |
| 12 | + row = |
| 13 | + [ |
| 14 | + ";Data;true;init(_:);;;Argument[0];ReturnValue;taint", |
| 15 | + ";Data;true;init(base64Encoded:options:);;;Argument[0];ReturnValue;taint", |
| 16 | + ";Data;true;init(buffer:);;;Argument[0];ReturnValue;taint", |
| 17 | + ";Data;true;init(bytes:count:);;;Argument[0];ReturnValue;taint", |
| 18 | + ";Data;true;init(contentsOf:options:);;;Argument[0];ReturnValue;taint", |
| 19 | + ";Data;true;init(bytesNoCopy:count:deallocator:);;;Argument[0];ReturnValue;taint", |
| 20 | + ";Data;true;init(referencing:);;;Argument[0];ReturnValue;taint", |
| 21 | + ";Data;true;append(_:);;;Argument[0];Argument[-1];taint", |
| 22 | + ";Data;true;append(_:count:);;;Argument[0];Argument[-1];taint", |
| 23 | + ";Data;true;append(contentsOf:);;;Argument[0];Argument[-1];taint", |
| 24 | + ";Data;true;base64EncodedData(options:);;;Argument[-1];ReturnValue;taint", |
| 25 | + ";Data;true;base64EncodedString(options:);;;Argument[-1];ReturnValue;taint", |
| 26 | + ";Data;true;compactMap(_:);;;Argument[-1];ReturnValue;taint", |
| 27 | + ";Data;true;copyBytes(to:);;;Argument[-1];Argument[0];taint", |
| 28 | + ";Data;true;copyBytes(to:count:);;;Argument[-1];Argument[0];taint", |
| 29 | + ";Data;true;copyBytes(to:from:);;;Argument[-1];Argument[0];taint", |
| 30 | + ";Data;true;flatMap(_:);;;Argument[-1];ReturnValue;taint", |
| 31 | + ";Data;true;insert(_:at:);;;Argument[0];Argument[-1];taint", |
| 32 | + ";Data;true;insert(contentsOf:at:);;;Argument[0];Argument[-1];taint", |
| 33 | + ";Data;true;map(_:);;;Argument[-1];ReturnValue;taint", |
| 34 | + ";Data;true;reduce(into:_:);;;Argument[-1];ReturnValue;taint", |
| 35 | + ";Data;true;replace(_:with:maxReplacements:);;;Argument[1];Argument[-1];taint", |
| 36 | + ";Data;true;replaceSubrange(_:with:);;;Argument[1];Argument[-1];taint", |
| 37 | + ";Data;true;replaceSubrange(_:with:count:);;;Argument[1];Argument[-1];taint", |
| 38 | + ";Data;true;replacing(_:with:maxReplacements:);;;Argument[1];Argument[-1];taint", |
| 39 | + ";Data;true;replacing(_:with:subrange:maxReplacements:);;;Argument[1];Argument[-1];taint", |
| 40 | + // TODO: this should be implemented by a model of BidirectionalCollection |
| 41 | + // ";Data;true;reversed();;;Argument[-1];ReturnValue;taint", |
| 42 | + ";Data;true;sorted();;;Argument[-1];ReturnValue;taint", |
| 43 | + ";Data;true;sorted(by:);;;Argument[-1];ReturnValue;taint", |
| 44 | + ";Data;true;sorted(using:);;;Argument[-1];ReturnValue;taint", |
| 45 | + ";Data;true;shuffled();;;Argument[-1];ReturnValue;taint", |
| 46 | + ";Data;true;shuffled(using:);;;Argument[-1];ReturnValue;taint", |
| 47 | + ";Data;true;trimmingPrefix(_:);;;Argument[-1];ReturnValue;taint", |
| 48 | + ";Data;true;trimmingPrefix(while:);;;Argument[-1];ReturnValue;taint" |
| 49 | + ] |
| 50 | + } |
6 | 51 | }
|
0 commit comments