Skip to content

Commit 0c534b6

Browse files
committed
Swift: Extend Numeric models.
1 parent 2863a14 commit 0c534b6

File tree

4 files changed

+107
-15
lines changed

4 files changed

+107
-15
lines changed

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

Lines changed: 75 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,59 @@ private class NumericSummaries extends SummaryModelCsv {
1717
";;false;numericCast(_:);;;Argument[0];ReturnValue;taint",
1818
";;false;unsafeDowncast(_:to:);;;Argument[0];ReturnValue;taint",
1919
";;false;unsafeBitCast(_:to:);;;Argument[0];ReturnValue;taint",
20+
";;false;numericCast(_:);;;Argument[0];ReturnValue;taint",
21+
";;false;min(_:_:);;;Argument[0..1];ReturnValue;taint",
22+
";;false;min(_:_:_:_:);;;Argument[0..2];ReturnValue;taint",
23+
";;false;min(_:_:_:_:);;;Argument[3].CollectionElement;ReturnValue;taint",
24+
";;false;max(_:_:);;;Argument[0..1];ReturnValue;taint",
25+
";;false;max(_:_:_:_:);;;Argument[0..2];ReturnValue;taint",
26+
";;false;max(_:_:_:_:);;;Argument[3].CollectionElement;ReturnValue;taint",
27+
";;false;abs(_:);;;Argument[0];ReturnValue;taint",
2028
";Numeric;true;init(exactly:);;;Argument[0];ReturnValue.OptionalSome;value",
21-
";Numeric;true;init(bitPattern:);;;Argument[0];ReturnValue;taint",
29+
";Numeric;true;init(bitPattern:);;;Argument[0];ReturnValue;taint", // actually implemented in Int, UInt, Double etc.
30+
";Numeric;true;init(truncating:);;;Argument[0];ReturnValue;taint", // actually implemented in Int, UInt, Double etc.
2231
";BinaryInteger;true;init(_:);;;Argument[0];ReturnValue;taint",
2332
";BinaryInteger;true;init(clamping:);;;Argument[0];ReturnValue;taint",
2433
";BinaryInteger;true;init(truncatingIfNeeded:);;;Argument[0];ReturnValue;taint",
2534
";BinaryInteger;true;init(_:format:lenient:);;;Argument[0];ReturnValue;taint",
2635
";BinaryInteger;true;init(_:strategy:);;;Argument[0];ReturnValue;taint",
2736
";BinaryInteger;true;formatted();;;Argument[-1];ReturnValue;taint",
2837
";BinaryInteger;true;formatted(_:);;;Argument[-1];ReturnValue;taint",
29-
";FixedWidthInteger;true;init(_:radix:);;;Argument[0];ReturnValue;taint",
38+
";BinaryInteger;true;quotientAndRemainder(dividingBy:);;;Argument[-1..0];ReturnValue.TupleElement[0..1];taint",
39+
";FixedWidthInteger;true;init(_:radix:);;;Argument[0];ReturnValue.OptionalSome;taint",
3040
";FixedWidthInteger;true;init(littleEndian:);;;Argument[0];ReturnValue;taint",
3141
";FixedWidthInteger;true;init(bigEndian:);;;Argument[0];ReturnValue;taint",
42+
";FixedWidthInteger;true;addingReportingOverflow(_:);;;Argument[-1..0];ReturnValue.TupleElement[0];taint",
43+
";FixedWidthInteger;true;subtractingReportingOverflow(_:);;;Argument[-1..0];ReturnValue.TupleElement[0];taint",
44+
";FixedWidthInteger;true;multipliedReportingOverflow(by:);;;Argument[-1..0];ReturnValue.TupleElement[0];taint",
45+
";FixedWidthInteger;true;dividedReportingOverflow(by:);;;Argument[-1..0];ReturnValue.TupleElement[0];taint",
46+
";FixedWidthInteger;true;remainderReportingOverflow(dividingBy:);;;Argument[-1..0];ReturnValue.TupleElement[0];taint",
47+
";FixedWidthInteger;true;dividingFullWidth(_:);;;Argument[-1];ReturnValue.TupleElement[0..1];taint",
48+
";FixedWidthInteger;true;dividingFullWidth(_:);;;Argument[1].TupleElement[0..1];ReturnValue.TupleElement[0..1];taint",
49+
";FixedWidthInteger;true;multipliedFullWidth(by:);;;Argument[-1..0];ReturnValue.TupleElement[0..1];taint",
3250
";FloatingPoint;true;init(_:);;;Argument[0];ReturnValue;taint",
3351
";FloatingPoint;true;init(sign:exponent:significand:);;;Argument[1..2];ReturnValue;taint",
3452
";FloatingPoint;true;init(signOf:magnitudeOf:);;;Argument[1];ReturnValue;taint",
53+
";FloatingPoint;true;addProduct(_:_:);;;Argument[-1..1];Argument[-1];taint",
54+
";FloatingPoint;true;addingProduct(_:_:);;;Argument[-1..1];ReturnValue;taint",
55+
";FloatingPoint;true;formRemainder(dividingBy:);;;Argument[-1..0];Argument[-1];taint",
56+
";FloatingPoint;true;remainder(dividingBy:);;;Argument[-1..0];ReturnValue;taint",
57+
";FloatingPoint;true;formTruncatingRemainder(dividingBy:);;;Argument[-1..0];Argument[-1];taint",
58+
";FloatingPoint;true;truncatingRemainder(dividingBy:);;;Argument[-1..0];ReturnValue;taint",
59+
";FloatingPoint;true;rounded();;;Argument[-1];ReturnValue;taint",
60+
";FloatingPoint;true;rounded(_:);;;Argument[-1];ReturnValue;taint",
61+
";FloatingPoint;true;squareRoot();;;Argument[-1];ReturnValue;taint",
62+
";FloatingPoint;true;maximum(_:_:);;;Argument[0..1];ReturnValue;taint",
63+
";FloatingPoint;true;maximumMagnitude(_:_:);;;Argument[0..1];ReturnValue;taint",
64+
";FloatingPoint;true;minimum(_:_:);;;Argument[0..1];ReturnValue;taint",
65+
";FloatingPoint;true;minimumMagnitude(_:_:);;;Argument[0..1];ReturnValue;taint",
66+
";BinaryFloatingPoint;true;init(sign:exponentBitPattern:significandBitPattern:);;;Argument[0..2];ReturnValue;taint",
67+
";BinaryFloatingPoint;true;init(_:format:lenient:);;;Argument[0];ReturnValue;taint",
68+
";BinaryFloatingPoint;true;init(_:strategy:);;;Argument[0];ReturnValue;taint",
69+
";BinaryFloatingPoint;true;formatted();;;Argument[-1];ReturnValue;taint",
70+
";BinaryFloatingPoint;true;formatted(_:);;;Argument[-1];ReturnValue;taint",
71+
";Strideable;true;advanced(by:);;;Argument[-1..0];ReturnValue;taint",
72+
";Strideable;true;distance(to:);;;Argument[-1..0];ReturnValue;taint",
3573
]
3674
}
3775
}
@@ -44,10 +82,40 @@ private class NumericFieldsInheritTaint extends TaintInheritingContent,
4482
DataFlow::Content::FieldContent
4583
{
4684
NumericFieldsInheritTaint() {
47-
this.getField().hasQualifiedName("FixedWidthInteger", ["littleEndian", "bigEndian"])
48-
or
49-
this.getField()
50-
.hasQualifiedName(["Double", "Float", "Float80", "FloatingPoint"],
51-
["exponent", "significand"])
85+
exists(string className, string fieldName |
86+
(
87+
(
88+
className = "FixedWidthInteger" and
89+
fieldName = ["littleEndian", "bigEndian"]
90+
)
91+
or
92+
(
93+
className = ["Double", "Float", "Float80", "FloatingPoint"] and
94+
fieldName = ["exponent", "significand"]
95+
)
96+
or
97+
(
98+
className = "BinaryInteger" and
99+
fieldName = "words"
100+
)
101+
or
102+
(
103+
className = "Numeric" and
104+
fieldName = ["magnitude", "byteSwapped"]
105+
)
106+
or
107+
(
108+
className = "BinaryFloatingPoint" and
109+
fieldName = ["binade", "exponentBitPattern", "significandBitPattern"]
110+
)
111+
) and
112+
exists(FieldDecl fieldDecl, Decl declaringDecl, TypeDecl namedTypeDecl |
113+
namedTypeDecl.getFullName() = className and
114+
fieldDecl.getName() = fieldName and
115+
declaringDecl.getAMember() = fieldDecl and
116+
declaringDecl.asNominalTypeDecl() = namedTypeDecl.getADerivedTypeDecl*() and
117+
this.getField() = fieldDecl
118+
)
119+
)
52120
}
53121
}

swift/ql/test/library-tests/dataflow/taint/core/LocalTaint.expected

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,19 +60,23 @@
6060
| conversions.swift:63:6:63:6 | SSA def(v7) | conversions.swift:64:12:64:12 | v7 |
6161
| conversions.swift:63:6:63:6 | v7 | conversions.swift:63:6:63:6 | SSA def(v7) |
6262
| conversions.swift:63:11:63:26 | call to abs(_:) | conversions.swift:63:6:63:6 | v7 |
63+
| conversions.swift:63:15:63:25 | call to sourceInt() | conversions.swift:63:11:63:26 | call to abs(_:) |
6364
| conversions.swift:66:6:66:6 | SSA def(v8) | conversions.swift:67:12:67:12 | v8 |
6465
| conversions.swift:66:6:66:6 | v8 | conversions.swift:66:6:66:6 | SSA def(v8) |
6566
| conversions.swift:66:18:66:18 | 0 | conversions.swift:66:6:66:6 | v8 |
6667
| conversions.swift:67:12:67:12 | [post] v8 | conversions.swift:68:12:68:12 | v8 |
6768
| conversions.swift:67:12:67:12 | v8 | conversions.swift:68:12:68:12 | v8 |
6869
| conversions.swift:68:12:68:12 | [post] v8 | conversions.swift:69:12:69:12 | v8 |
70+
| conversions.swift:68:12:68:12 | v8 | conversions.swift:68:12:68:29 | call to advanced(by:) |
6971
| conversions.swift:68:12:68:12 | v8 | conversions.swift:69:12:69:12 | v8 |
72+
| conversions.swift:68:28:68:28 | 1 | conversions.swift:68:12:68:29 | call to advanced(by:) |
73+
| conversions.swift:69:12:69:12 | v8 | conversions.swift:69:12:69:39 | call to advanced(by:) |
74+
| conversions.swift:69:28:69:38 | call to sourceInt() | conversions.swift:69:12:69:39 | call to advanced(by:) |
7075
| conversions.swift:71:12:71:36 | call to Self.init(exactly:) | conversions.swift:71:12:71:37 | ...! |
7176
| conversions.swift:72:12:72:39 | call to Self.init(exactly:) | conversions.swift:72:12:72:40 | ...! |
7277
| conversions.swift:73:26:73:36 | call to sourceInt() | conversions.swift:73:12:73:37 | call to Self.init(clamping:) |
7378
| conversions.swift:74:36:74:46 | call to sourceInt() | conversions.swift:74:12:74:47 | call to Self.init(truncatingIfNeeded:) |
7479
| conversions.swift:75:12:75:41 | call to Self.init(_:radix:) | conversions.swift:75:12:75:42 | ...! |
75-
| conversions.swift:75:16:75:29 | call to sourceString() | conversions.swift:75:12:75:41 | call to Self.init(_:radix:) |
7680
| conversions.swift:77:30:77:40 | call to sourceInt() | conversions.swift:77:12:77:41 | call to Self.init(littleEndian:) |
7781
| conversions.swift:78:27:78:37 | call to sourceInt() | conversions.swift:78:12:78:38 | call to Self.init(bigEndian:) |
7882
| conversions.swift:79:12:79:22 | call to sourceInt() | conversions.swift:79:12:79:24 | .littleEndian |
@@ -131,6 +135,8 @@
131135
| conversions.swift:127:12:127:26 | call to sourceFloat80() | conversions.swift:127:12:127:28 | .significand |
132136
| conversions.swift:128:12:128:25 | call to sourceDouble() | conversions.swift:128:12:128:27 | .exponent |
133137
| conversions.swift:129:12:129:25 | call to sourceDouble() | conversions.swift:129:12:129:27 | .significand |
138+
| conversions.swift:130:12:130:23 | call to sourceUInt() | conversions.swift:130:12:130:25 | .byteSwapped |
139+
| conversions.swift:131:12:131:25 | call to sourceUInt64() | conversions.swift:131:12:131:27 | .byteSwapped |
134140
| conversions.swift:136:19:136:32 | call to sourceString() | conversions.swift:136:12:136:33 | call to String.init(_:) |
135141
| conversions.swift:138:6:138:6 | SSA def(ms1) | conversions.swift:139:12:139:12 | ms1 |
136142
| conversions.swift:138:6:138:6 | ms1 | conversions.swift:138:6:138:6 | SSA def(ms1) |

swift/ql/test/library-tests/dataflow/taint/core/Taint.expected

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,17 @@ edges
2323
| conversions.swift:57:36:57:46 | call to sourceInt() | conversions.swift:57:11:57:47 | call to Self.init(truncatingIfNeeded:) |
2424
| conversions.swift:60:11:60:39 | call to UInt.init(bitPattern:) | conversions.swift:61:12:61:12 | v6 |
2525
| conversions.swift:60:28:60:38 | call to sourceInt() | conversions.swift:60:11:60:39 | call to UInt.init(bitPattern:) |
26+
| conversions.swift:63:11:63:26 | call to abs(_:) | conversions.swift:64:12:64:12 | v7 |
27+
| conversions.swift:63:15:63:25 | call to sourceInt() | conversions.swift:63:11:63:26 | call to abs(_:) |
28+
| conversions.swift:69:28:69:38 | call to sourceInt() | conversions.swift:69:12:69:39 | call to advanced(by:) |
2629
| conversions.swift:71:12:71:36 | call to Self.init(exactly:) [some:0] | conversions.swift:71:12:71:37 | ...! |
2730
| conversions.swift:71:25:71:35 | call to sourceInt() | conversions.swift:71:12:71:36 | call to Self.init(exactly:) [some:0] |
2831
| conversions.swift:72:12:72:39 | call to Self.init(exactly:) [some:0] | conversions.swift:72:12:72:40 | ...! |
2932
| conversions.swift:72:28:72:38 | call to sourceInt() | conversions.swift:72:12:72:39 | call to Self.init(exactly:) [some:0] |
3033
| conversions.swift:73:26:73:36 | call to sourceInt() | conversions.swift:73:12:73:37 | call to Self.init(clamping:) |
3134
| conversions.swift:74:36:74:46 | call to sourceInt() | conversions.swift:74:12:74:47 | call to Self.init(truncatingIfNeeded:) |
32-
| conversions.swift:75:12:75:41 | call to Self.init(_:radix:) | conversions.swift:75:12:75:42 | ...! |
33-
| conversions.swift:75:16:75:29 | call to sourceString() | conversions.swift:75:12:75:41 | call to Self.init(_:radix:) |
35+
| conversions.swift:75:12:75:41 | call to Self.init(_:radix:) [some:0] | conversions.swift:75:12:75:42 | ...! |
36+
| conversions.swift:75:16:75:29 | call to sourceString() | conversions.swift:75:12:75:41 | call to Self.init(_:radix:) [some:0] |
3437
| conversions.swift:77:30:77:40 | call to sourceInt() | conversions.swift:77:12:77:41 | call to Self.init(littleEndian:) |
3538
| conversions.swift:78:27:78:37 | call to sourceInt() | conversions.swift:78:12:78:38 | call to Self.init(bigEndian:) |
3639
| conversions.swift:79:12:79:22 | call to sourceInt() | conversions.swift:79:12:79:24 | .littleEndian |
@@ -56,6 +59,8 @@ edges
5659
| conversions.swift:127:12:127:26 | call to sourceFloat80() | conversions.swift:127:12:127:28 | .significand |
5760
| conversions.swift:128:12:128:25 | call to sourceDouble() | conversions.swift:128:12:128:27 | .exponent |
5861
| conversions.swift:129:12:129:25 | call to sourceDouble() | conversions.swift:129:12:129:27 | .significand |
62+
| conversions.swift:130:12:130:23 | call to sourceUInt() | conversions.swift:130:12:130:25 | .byteSwapped |
63+
| conversions.swift:131:12:131:25 | call to sourceUInt64() | conversions.swift:131:12:131:27 | .byteSwapped |
5964
| conversions.swift:136:19:136:32 | call to sourceString() | conversions.swift:136:12:136:33 | call to String.init(_:) |
6065
| conversions.swift:144:12:144:35 | call to MyString.init(_:) | conversions.swift:144:12:144:35 | call to MyString.init(_:) [some:0] |
6166
| conversions.swift:144:12:144:35 | call to MyString.init(_:) | conversions.swift:145:12:145:12 | ms2 |
@@ -200,6 +205,11 @@ nodes
200205
| conversions.swift:60:11:60:39 | call to UInt.init(bitPattern:) | semmle.label | call to UInt.init(bitPattern:) |
201206
| conversions.swift:60:28:60:38 | call to sourceInt() | semmle.label | call to sourceInt() |
202207
| conversions.swift:61:12:61:12 | v6 | semmle.label | v6 |
208+
| conversions.swift:63:11:63:26 | call to abs(_:) | semmle.label | call to abs(_:) |
209+
| conversions.swift:63:15:63:25 | call to sourceInt() | semmle.label | call to sourceInt() |
210+
| conversions.swift:64:12:64:12 | v7 | semmle.label | v7 |
211+
| conversions.swift:69:12:69:39 | call to advanced(by:) | semmle.label | call to advanced(by:) |
212+
| conversions.swift:69:28:69:38 | call to sourceInt() | semmle.label | call to sourceInt() |
203213
| conversions.swift:71:12:71:36 | call to Self.init(exactly:) [some:0] | semmle.label | call to Self.init(exactly:) [some:0] |
204214
| conversions.swift:71:12:71:37 | ...! | semmle.label | ...! |
205215
| conversions.swift:71:25:71:35 | call to sourceInt() | semmle.label | call to sourceInt() |
@@ -210,7 +220,7 @@ nodes
210220
| conversions.swift:73:26:73:36 | call to sourceInt() | semmle.label | call to sourceInt() |
211221
| conversions.swift:74:12:74:47 | call to Self.init(truncatingIfNeeded:) | semmle.label | call to Self.init(truncatingIfNeeded:) |
212222
| conversions.swift:74:36:74:46 | call to sourceInt() | semmle.label | call to sourceInt() |
213-
| conversions.swift:75:12:75:41 | call to Self.init(_:radix:) | semmle.label | call to Self.init(_:radix:) |
223+
| conversions.swift:75:12:75:41 | call to Self.init(_:radix:) [some:0] | semmle.label | call to Self.init(_:radix:) [some:0] |
214224
| conversions.swift:75:12:75:42 | ...! | semmle.label | ...! |
215225
| conversions.swift:75:16:75:29 | call to sourceString() | semmle.label | call to sourceString() |
216226
| conversions.swift:77:12:77:41 | call to Self.init(littleEndian:) | semmle.label | call to Self.init(littleEndian:) |
@@ -261,6 +271,10 @@ nodes
261271
| conversions.swift:128:12:128:27 | .exponent | semmle.label | .exponent |
262272
| conversions.swift:129:12:129:25 | call to sourceDouble() | semmle.label | call to sourceDouble() |
263273
| conversions.swift:129:12:129:27 | .significand | semmle.label | .significand |
274+
| conversions.swift:130:12:130:23 | call to sourceUInt() | semmle.label | call to sourceUInt() |
275+
| conversions.swift:130:12:130:25 | .byteSwapped | semmle.label | .byteSwapped |
276+
| conversions.swift:131:12:131:25 | call to sourceUInt64() | semmle.label | call to sourceUInt64() |
277+
| conversions.swift:131:12:131:27 | .byteSwapped | semmle.label | .byteSwapped |
264278
| conversions.swift:135:12:135:25 | call to sourceString() | semmle.label | call to sourceString() |
265279
| conversions.swift:136:12:136:33 | call to String.init(_:) | semmle.label | call to String.init(_:) |
266280
| conversions.swift:136:19:136:32 | call to sourceString() | semmle.label | call to sourceString() |
@@ -434,6 +448,8 @@ subpaths
434448
| conversions.swift:55:12:55:12 | v4 | conversions.swift:54:31:54:41 | call to sourceInt() | conversions.swift:55:12:55:12 | v4 | result |
435449
| conversions.swift:58:12:58:12 | v5 | conversions.swift:57:36:57:46 | call to sourceInt() | conversions.swift:58:12:58:12 | v5 | result |
436450
| conversions.swift:61:12:61:12 | v6 | conversions.swift:60:28:60:38 | call to sourceInt() | conversions.swift:61:12:61:12 | v6 | result |
451+
| conversions.swift:64:12:64:12 | v7 | conversions.swift:63:15:63:25 | call to sourceInt() | conversions.swift:64:12:64:12 | v7 | result |
452+
| conversions.swift:69:12:69:39 | call to advanced(by:) | conversions.swift:69:28:69:38 | call to sourceInt() | conversions.swift:69:12:69:39 | call to advanced(by:) | result |
437453
| conversions.swift:71:12:71:37 | ...! | conversions.swift:71:25:71:35 | call to sourceInt() | conversions.swift:71:12:71:37 | ...! | result |
438454
| conversions.swift:72:12:72:40 | ...! | conversions.swift:72:28:72:38 | call to sourceInt() | conversions.swift:72:12:72:40 | ...! | result |
439455
| conversions.swift:73:12:73:37 | call to Self.init(clamping:) | conversions.swift:73:26:73:36 | call to sourceInt() | conversions.swift:73:12:73:37 | call to Self.init(clamping:) | result |
@@ -462,6 +478,8 @@ subpaths
462478
| conversions.swift:127:12:127:28 | .significand | conversions.swift:127:12:127:26 | call to sourceFloat80() | conversions.swift:127:12:127:28 | .significand | result |
463479
| conversions.swift:128:12:128:27 | .exponent | conversions.swift:128:12:128:25 | call to sourceDouble() | conversions.swift:128:12:128:27 | .exponent | result |
464480
| conversions.swift:129:12:129:27 | .significand | conversions.swift:129:12:129:25 | call to sourceDouble() | conversions.swift:129:12:129:27 | .significand | result |
481+
| conversions.swift:130:12:130:25 | .byteSwapped | conversions.swift:130:12:130:23 | call to sourceUInt() | conversions.swift:130:12:130:25 | .byteSwapped | result |
482+
| conversions.swift:131:12:131:27 | .byteSwapped | conversions.swift:131:12:131:25 | call to sourceUInt64() | conversions.swift:131:12:131:27 | .byteSwapped | result |
465483
| conversions.swift:135:12:135:25 | call to sourceString() | conversions.swift:135:12:135:25 | call to sourceString() | conversions.swift:135:12:135:25 | call to sourceString() | result |
466484
| conversions.swift:136:12:136:33 | call to String.init(_:) | conversions.swift:136:19:136:32 | call to sourceString() | conversions.swift:136:12:136:33 | call to String.init(_:) | result |
467485
| conversions.swift:145:12:145:12 | ms2 | conversions.swift:144:21:144:34 | call to sourceString() | conversions.swift:145:12:145:12 | ms2 | result |

swift/ql/test/library-tests/dataflow/taint/core/conversions.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,12 @@ func testConversions() {
6161
sink(arg: v6) // $ tainted=60
6262

6363
let v7 = abs(sourceInt())
64-
sink(arg: v7) // $ MISSING: tainted=63
64+
sink(arg: v7) // $ tainted=63
6565

6666
let v8 = UInt64(0)
6767
sink(arg: v8)
6868
sink(arg: v8.advanced(by: 1))
69-
sink(arg: v8.advanced(by: sourceInt())) // $ MISSING: tainted=69
69+
sink(arg: v8.advanced(by: sourceInt())) // $ tainted=69
7070

7171
sink(arg: Int(exactly: sourceInt())!) // $ tainted=71
7272
sink(arg: UInt32(exactly: sourceInt())!) // $ tainted=72
@@ -127,8 +127,8 @@ func testConversions() {
127127
sink(arg: sourceFloat80().significand) // $ tainted=127
128128
sink(arg: sourceDouble().exponent) // $ tainted=128
129129
sink(arg: sourceDouble().significand) // $ tainted=129
130-
sink(arg: sourceUInt().byteSwapped) // $ MISSING: tainted=130
131-
sink(arg: sourceUInt64().byteSwapped) // $ MISSING: tainted=131
130+
sink(arg: sourceUInt().byteSwapped) // $ tainted=130
131+
sink(arg: sourceUInt64().byteSwapped) // $ tainted=131
132132

133133
// ---
134134

0 commit comments

Comments
 (0)