|
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