|
1 | 1 | tainted = identity source("tainted") |
2 | | -sink tainted |
| 2 | +sink tainted # $ hasValueFlow=tainted |
3 | 3 |
|
4 | 4 | tainted2 = apply_block tainted do |x| |
5 | | - sink x |
| 5 | + sink x # $ hasValueFlow=tainted |
6 | 6 | x |
7 | 7 | end |
8 | 8 |
|
9 | | -sink tainted2 |
| 9 | +sink tainted2 # $ hasValueFlow=tainted |
10 | 10 |
|
11 | 11 | my_lambda = -> (x) { |
12 | | - sink x |
| 12 | + sink x # $ hasValueFlow=tainted |
13 | 13 | x |
14 | 14 | } |
15 | 15 |
|
16 | 16 | tainted3 = apply_lambda(my_lambda, tainted) |
17 | 17 |
|
18 | | -sink(tainted3) |
| 18 | +sink(tainted3) # $ hasValueFlow=tainted |
19 | 19 |
|
20 | 20 | tainted4 = Foo.firstArg(tainted) |
21 | | -sink(tainted4) |
| 21 | +sink(tainted4) # $ hasTaintFlow=tainted |
22 | 22 |
|
23 | 23 | notTainted = Foo.firstArg(nil, tainted)) |
24 | 24 | sink(notTainted) |
25 | 25 |
|
26 | 26 | tainted5 = Foo.secondArg(nil, tainted) |
27 | | -sink(tainted5) |
| 27 | +sink(tainted5) # $ hasTaintFlow=tainted |
28 | 28 |
|
29 | 29 | sink(Foo.onlyWithBlock(tainted)) |
30 | | -sink(Foo.onlyWithBlock(tainted) do |x| end) |
31 | | -sink(Foo.onlyWithoutBlock(tainted)) |
| 30 | +sink(Foo.onlyWithBlock(tainted) do |x| end) # $ hasTaintFlow=tainted |
| 31 | +sink(Foo.onlyWithoutBlock(tainted)) # $ hasTaintFlow=tainted |
32 | 32 | sink(Foo.onlyWithoutBlock(tainted) do |x| end) |
33 | 33 |
|
34 | | -Foo.new.method(tainted) |
35 | | -Bar.new.method(tainted) |
36 | | -Bar.new.next.method(tainted) |
37 | | -Bar.new.next.next.next.next.method(tainted) |
| 34 | +Foo.new.method(tainted) # $ hasValueFlow=tainted |
| 35 | +Bar.new.method(tainted) # $ hasValueFlow=tainted |
| 36 | +Bar.new.next.method(tainted) # $ hasValueFlow=tainted |
| 37 | +Bar.new.next.next.next.next.method(tainted) # $ hasValueFlow=tainted |
38 | 38 |
|
39 | 39 | def userDefinedFunction(x, y) |
40 | 40 | t = source("t") |
41 | | - sink(x.matchedByName(t)) |
42 | | - sink(y.matchedByName(t)) |
| 41 | + sink(x.matchedByName(t)) # $ hasTaintFlow=t |
| 42 | + sink(y.matchedByName(t)) # $ hasTaintFlow=t |
43 | 43 | sink(x.unmatchedName(t)) |
44 | | - sink(t.matchedByNameRcv()) |
| 44 | + sink(t.matchedByNameRcv()) # $ hasTaintFlow=t |
45 | 45 | end |
46 | 46 |
|
47 | 47 | Foo.blockArg do |x| |
48 | | - sink(x.preserveTaint(source("blockArg"))) |
| 48 | + sink(x.preserveTaint(source("blockArg"))) # $ hasTaintFlow=blockArg |
49 | 49 | end |
50 | 50 |
|
51 | | -sink(Foo.namedArg(foo: tainted)) |
| 51 | +sink(Foo.namedArg(foo: tainted)) # $ hasTaintFlow=tainted |
52 | 52 | sink(Foo.namedArg(tainted)) |
53 | 53 |
|
54 | 54 | Foo.intoNamedCallback(tainted, foo: ->(x) { |
55 | | - sink(x) |
| 55 | + sink(x) # $ hasTaintFlow=tainted |
56 | 56 | }) |
57 | 57 | Foo.intoNamedParameter(tainted, ->(foo:) { |
58 | | - sink(foo) |
| 58 | + sink(foo) # $ MISSING: hasTaintFlow=tainted |
59 | 59 | }) |
60 | 60 |
|
61 | 61 | Foo.startInNamedCallback(foo: ->(x) { |
62 | | - sink(x.preserveTaint(source("startInNamedCallback"))) |
| 62 | + sink(x.preserveTaint(source("startInNamedCallback"))) # $ hasTaintFlow=startInNamedCallback |
63 | 63 | }) |
64 | 64 | Foo.startInNamedParameter(->(foo:) { |
65 | | - sink(foo.preserveTaint(source("startInNamedParameter"))) |
| 65 | + sink(foo.preserveTaint(source("startInNamedParameter"))) # $ hasTaintFlow=startInNamedParameter |
66 | 66 | }) |
0 commit comments