Skip to content

Commit e3948e6

Browse files
authored
Merge pull request #10354 from hvitved/ruby/convert-flow-test
Ruby: Convert data-flow test to use inline test expectations
2 parents 8b8e74c + 46127f9 commit e3948e6

File tree

3 files changed

+111
-75
lines changed

3 files changed

+111
-75
lines changed
Lines changed: 88 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,92 @@
1+
failures
12
edges
2-
| call_sensitivity.rb:7:13:7:13 | x : | call_sensitivity.rb:8:11:8:11 | x : |
3-
| call_sensitivity.rb:8:11:8:11 | x : | call_sensitivity.rb:15:20:15:20 | x : |
4-
| call_sensitivity.rb:15:9:15:15 | "taint" : | call_sensitivity.rb:7:13:7:13 | x : |
5-
| call_sensitivity.rb:15:20:15:20 | x : | call_sensitivity.rb:15:28:15:28 | x |
6-
| call_sensitivity.rb:17:27:17:27 | x : | call_sensitivity.rb:18:17:18:17 | x : |
7-
| call_sensitivity.rb:17:27:17:27 | x : | call_sensitivity.rb:18:17:18:17 | x : |
8-
| call_sensitivity.rb:17:27:17:27 | x : | call_sensitivity.rb:18:17:18:17 | x : |
9-
| call_sensitivity.rb:18:17:18:17 | x : | call_sensitivity.rb:27:17:27:17 | x : |
10-
| call_sensitivity.rb:18:17:18:17 | x : | call_sensitivity.rb:36:23:36:23 | x : |
11-
| call_sensitivity.rb:18:17:18:17 | x : | call_sensitivity.rb:39:24:39:24 | x : |
12-
| call_sensitivity.rb:27:17:27:17 | x : | call_sensitivity.rb:27:27:27:27 | x |
13-
| call_sensitivity.rb:28:25:28:31 | "taint" : | call_sensitivity.rb:17:27:17:27 | x : |
14-
| call_sensitivity.rb:36:23:36:23 | x : | call_sensitivity.rb:36:31:36:31 | x |
15-
| call_sensitivity.rb:37:25:37:31 | "taint" : | call_sensitivity.rb:17:27:17:27 | x : |
16-
| call_sensitivity.rb:39:24:39:24 | x : | call_sensitivity.rb:39:32:39:32 | x |
17-
| call_sensitivity.rb:40:26:40:32 | "taint" : | call_sensitivity.rb:17:27:17:27 | x : |
3+
| call_sensitivity.rb:9:7:9:13 | call to taint : | call_sensitivity.rb:9:6:9:14 | ( ... ) |
4+
| call_sensitivity.rb:9:7:9:13 | call to taint : | call_sensitivity.rb:9:6:9:14 | ( ... ) |
5+
| call_sensitivity.rb:11:13:11:13 | x : | call_sensitivity.rb:12:11:12:11 | x : |
6+
| call_sensitivity.rb:11:13:11:13 | x : | call_sensitivity.rb:12:11:12:11 | x : |
7+
| call_sensitivity.rb:12:11:12:11 | x : | call_sensitivity.rb:19:22:19:22 | x : |
8+
| call_sensitivity.rb:12:11:12:11 | x : | call_sensitivity.rb:19:22:19:22 | x : |
9+
| call_sensitivity.rb:19:9:19:17 | ( ... ) : | call_sensitivity.rb:11:13:11:13 | x : |
10+
| call_sensitivity.rb:19:9:19:17 | ( ... ) : | call_sensitivity.rb:11:13:11:13 | x : |
11+
| call_sensitivity.rb:19:10:19:16 | call to taint : | call_sensitivity.rb:19:9:19:17 | ( ... ) : |
12+
| call_sensitivity.rb:19:10:19:16 | call to taint : | call_sensitivity.rb:19:9:19:17 | ( ... ) : |
13+
| call_sensitivity.rb:19:22:19:22 | x : | call_sensitivity.rb:19:30:19:30 | x |
14+
| call_sensitivity.rb:19:22:19:22 | x : | call_sensitivity.rb:19:30:19:30 | x |
15+
| call_sensitivity.rb:21:27:21:27 | x : | call_sensitivity.rb:22:17:22:17 | x : |
16+
| call_sensitivity.rb:21:27:21:27 | x : | call_sensitivity.rb:22:17:22:17 | x : |
17+
| call_sensitivity.rb:21:27:21:27 | x : | call_sensitivity.rb:22:17:22:17 | x : |
18+
| call_sensitivity.rb:21:27:21:27 | x : | call_sensitivity.rb:22:17:22:17 | x : |
19+
| call_sensitivity.rb:21:27:21:27 | x : | call_sensitivity.rb:22:17:22:17 | x : |
20+
| call_sensitivity.rb:21:27:21:27 | x : | call_sensitivity.rb:22:17:22:17 | x : |
21+
| call_sensitivity.rb:22:17:22:17 | x : | call_sensitivity.rb:31:17:31:17 | x : |
22+
| call_sensitivity.rb:22:17:22:17 | x : | call_sensitivity.rb:31:17:31:17 | x : |
23+
| call_sensitivity.rb:22:17:22:17 | x : | call_sensitivity.rb:40:23:40:23 | x : |
24+
| call_sensitivity.rb:22:17:22:17 | x : | call_sensitivity.rb:40:23:40:23 | x : |
25+
| call_sensitivity.rb:22:17:22:17 | x : | call_sensitivity.rb:43:24:43:24 | x : |
26+
| call_sensitivity.rb:22:17:22:17 | x : | call_sensitivity.rb:43:24:43:24 | x : |
27+
| call_sensitivity.rb:31:17:31:17 | x : | call_sensitivity.rb:31:27:31:27 | x |
28+
| call_sensitivity.rb:31:17:31:17 | x : | call_sensitivity.rb:31:27:31:27 | x |
29+
| call_sensitivity.rb:32:25:32:32 | call to taint : | call_sensitivity.rb:21:27:21:27 | x : |
30+
| call_sensitivity.rb:32:25:32:32 | call to taint : | call_sensitivity.rb:21:27:21:27 | x : |
31+
| call_sensitivity.rb:40:23:40:23 | x : | call_sensitivity.rb:40:31:40:31 | x |
32+
| call_sensitivity.rb:40:23:40:23 | x : | call_sensitivity.rb:40:31:40:31 | x |
33+
| call_sensitivity.rb:41:25:41:32 | call to taint : | call_sensitivity.rb:21:27:21:27 | x : |
34+
| call_sensitivity.rb:41:25:41:32 | call to taint : | call_sensitivity.rb:21:27:21:27 | x : |
35+
| call_sensitivity.rb:43:24:43:24 | x : | call_sensitivity.rb:43:32:43:32 | x |
36+
| call_sensitivity.rb:43:24:43:24 | x : | call_sensitivity.rb:43:32:43:32 | x |
37+
| call_sensitivity.rb:44:26:44:33 | call to taint : | call_sensitivity.rb:21:27:21:27 | x : |
38+
| call_sensitivity.rb:44:26:44:33 | call to taint : | call_sensitivity.rb:21:27:21:27 | x : |
1839
nodes
19-
| call_sensitivity.rb:5:6:5:12 | "taint" | semmle.label | "taint" |
20-
| call_sensitivity.rb:7:13:7:13 | x : | semmle.label | x : |
21-
| call_sensitivity.rb:8:11:8:11 | x : | semmle.label | x : |
22-
| call_sensitivity.rb:15:9:15:15 | "taint" : | semmle.label | "taint" : |
23-
| call_sensitivity.rb:15:20:15:20 | x : | semmle.label | x : |
24-
| call_sensitivity.rb:15:28:15:28 | x | semmle.label | x |
25-
| call_sensitivity.rb:17:27:17:27 | x : | semmle.label | x : |
26-
| call_sensitivity.rb:17:27:17:27 | x : | semmle.label | x : |
27-
| call_sensitivity.rb:17:27:17:27 | x : | semmle.label | x : |
28-
| call_sensitivity.rb:18:17:18:17 | x : | semmle.label | x : |
29-
| call_sensitivity.rb:18:17:18:17 | x : | semmle.label | x : |
30-
| call_sensitivity.rb:18:17:18:17 | x : | semmle.label | x : |
31-
| call_sensitivity.rb:27:17:27:17 | x : | semmle.label | x : |
32-
| call_sensitivity.rb:27:27:27:27 | x | semmle.label | x |
33-
| call_sensitivity.rb:28:25:28:31 | "taint" : | semmle.label | "taint" : |
34-
| call_sensitivity.rb:36:23:36:23 | x : | semmle.label | x : |
35-
| call_sensitivity.rb:36:31:36:31 | x | semmle.label | x |
36-
| call_sensitivity.rb:37:25:37:31 | "taint" : | semmle.label | "taint" : |
37-
| call_sensitivity.rb:39:24:39:24 | x : | semmle.label | x : |
38-
| call_sensitivity.rb:39:32:39:32 | x | semmle.label | x |
39-
| call_sensitivity.rb:40:26:40:32 | "taint" : | semmle.label | "taint" : |
40+
| call_sensitivity.rb:9:6:9:14 | ( ... ) | semmle.label | ( ... ) |
41+
| call_sensitivity.rb:9:6:9:14 | ( ... ) | semmle.label | ( ... ) |
42+
| call_sensitivity.rb:9:7:9:13 | call to taint : | semmle.label | call to taint : |
43+
| call_sensitivity.rb:9:7:9:13 | call to taint : | semmle.label | call to taint : |
44+
| call_sensitivity.rb:11:13:11:13 | x : | semmle.label | x : |
45+
| call_sensitivity.rb:11:13:11:13 | x : | semmle.label | x : |
46+
| call_sensitivity.rb:12:11:12:11 | x : | semmle.label | x : |
47+
| call_sensitivity.rb:12:11:12:11 | x : | semmle.label | x : |
48+
| call_sensitivity.rb:19:9:19:17 | ( ... ) : | semmle.label | ( ... ) : |
49+
| call_sensitivity.rb:19:9:19:17 | ( ... ) : | semmle.label | ( ... ) : |
50+
| call_sensitivity.rb:19:10:19:16 | call to taint : | semmle.label | call to taint : |
51+
| call_sensitivity.rb:19:10:19:16 | call to taint : | semmle.label | call to taint : |
52+
| call_sensitivity.rb:19:22:19:22 | x : | semmle.label | x : |
53+
| call_sensitivity.rb:19:22:19:22 | x : | semmle.label | x : |
54+
| call_sensitivity.rb:19:30:19:30 | x | semmle.label | x |
55+
| call_sensitivity.rb:19:30:19:30 | x | semmle.label | x |
56+
| call_sensitivity.rb:21:27:21:27 | x : | semmle.label | x : |
57+
| call_sensitivity.rb:21:27:21:27 | x : | semmle.label | x : |
58+
| call_sensitivity.rb:21:27:21:27 | x : | semmle.label | x : |
59+
| call_sensitivity.rb:21:27:21:27 | x : | semmle.label | x : |
60+
| call_sensitivity.rb:21:27:21:27 | x : | semmle.label | x : |
61+
| call_sensitivity.rb:21:27:21:27 | x : | semmle.label | x : |
62+
| call_sensitivity.rb:22:17:22:17 | x : | semmle.label | x : |
63+
| call_sensitivity.rb:22:17:22:17 | x : | semmle.label | x : |
64+
| call_sensitivity.rb:22:17:22:17 | x : | semmle.label | x : |
65+
| call_sensitivity.rb:22:17:22:17 | x : | semmle.label | x : |
66+
| call_sensitivity.rb:22:17:22:17 | x : | semmle.label | x : |
67+
| call_sensitivity.rb:22:17:22:17 | x : | semmle.label | x : |
68+
| call_sensitivity.rb:31:17:31:17 | x : | semmle.label | x : |
69+
| call_sensitivity.rb:31:17:31:17 | x : | semmle.label | x : |
70+
| call_sensitivity.rb:31:27:31:27 | x | semmle.label | x |
71+
| call_sensitivity.rb:31:27:31:27 | x | semmle.label | x |
72+
| call_sensitivity.rb:32:25:32:32 | call to taint : | semmle.label | call to taint : |
73+
| call_sensitivity.rb:32:25:32:32 | call to taint : | semmle.label | call to taint : |
74+
| call_sensitivity.rb:40:23:40:23 | x : | semmle.label | x : |
75+
| call_sensitivity.rb:40:23:40:23 | x : | semmle.label | x : |
76+
| call_sensitivity.rb:40:31:40:31 | x | semmle.label | x |
77+
| call_sensitivity.rb:40:31:40:31 | x | semmle.label | x |
78+
| call_sensitivity.rb:41:25:41:32 | call to taint : | semmle.label | call to taint : |
79+
| call_sensitivity.rb:41:25:41:32 | call to taint : | semmle.label | call to taint : |
80+
| call_sensitivity.rb:43:24:43:24 | x : | semmle.label | x : |
81+
| call_sensitivity.rb:43:24:43:24 | x : | semmle.label | x : |
82+
| call_sensitivity.rb:43:32:43:32 | x | semmle.label | x |
83+
| call_sensitivity.rb:43:32:43:32 | x | semmle.label | x |
84+
| call_sensitivity.rb:44:26:44:33 | call to taint : | semmle.label | call to taint : |
85+
| call_sensitivity.rb:44:26:44:33 | call to taint : | semmle.label | call to taint : |
4086
subpaths
4187
#select
42-
| call_sensitivity.rb:5:6:5:12 | "taint" | call_sensitivity.rb:5:6:5:12 | "taint" | call_sensitivity.rb:5:6:5:12 | "taint" | $@ | call_sensitivity.rb:5:6:5:12 | "taint" | "taint" |
43-
| call_sensitivity.rb:15:28:15:28 | x | call_sensitivity.rb:15:9:15:15 | "taint" : | call_sensitivity.rb:15:28:15:28 | x | $@ | call_sensitivity.rb:15:9:15:15 | "taint" : | "taint" : |
44-
| call_sensitivity.rb:27:27:27:27 | x | call_sensitivity.rb:28:25:28:31 | "taint" : | call_sensitivity.rb:27:27:27:27 | x | $@ | call_sensitivity.rb:28:25:28:31 | "taint" : | "taint" : |
45-
| call_sensitivity.rb:36:31:36:31 | x | call_sensitivity.rb:37:25:37:31 | "taint" : | call_sensitivity.rb:36:31:36:31 | x | $@ | call_sensitivity.rb:37:25:37:31 | "taint" : | "taint" : |
46-
| call_sensitivity.rb:39:32:39:32 | x | call_sensitivity.rb:40:26:40:32 | "taint" : | call_sensitivity.rb:39:32:39:32 | x | $@ | call_sensitivity.rb:40:26:40:32 | "taint" : | "taint" : |
88+
| call_sensitivity.rb:9:6:9:14 | ( ... ) | call_sensitivity.rb:9:7:9:13 | call to taint : | call_sensitivity.rb:9:6:9:14 | ( ... ) | $@ | call_sensitivity.rb:9:7:9:13 | call to taint : | call to taint : |
89+
| call_sensitivity.rb:19:30:19:30 | x | call_sensitivity.rb:19:10:19:16 | call to taint : | call_sensitivity.rb:19:30:19:30 | x | $@ | call_sensitivity.rb:19:10:19:16 | call to taint : | call to taint : |
90+
| call_sensitivity.rb:31:27:31:27 | x | call_sensitivity.rb:32:25:32:32 | call to taint : | call_sensitivity.rb:31:27:31:27 | x | $@ | call_sensitivity.rb:32:25:32:32 | call to taint : | call to taint : |
91+
| call_sensitivity.rb:40:31:40:31 | x | call_sensitivity.rb:41:25:41:32 | call to taint : | call_sensitivity.rb:40:31:40:31 | x | $@ | call_sensitivity.rb:41:25:41:32 | call to taint : | call to taint : |
92+
| call_sensitivity.rb:43:32:43:32 | x | call_sensitivity.rb:44:26:44:33 | call to taint : | call_sensitivity.rb:43:32:43:32 | x | $@ | call_sensitivity.rb:44:26:44:33 | call to taint : | call to taint : |

ruby/ql/test/library-tests/dataflow/call-sensitivity/call-sensitivity.ql

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,9 @@
44

55
import ruby
66
import codeql.ruby.DataFlow
7+
import TestUtilities.InlineFlowTest
78
import DataFlow::PathGraph
89

9-
class Conf extends DataFlow::Configuration {
10-
Conf() { this = "Conf" }
11-
12-
override predicate isSource(DataFlow::Node src) {
13-
src.asExpr().getExpr().(StringLiteral).getConstantValue().isString("taint")
14-
}
15-
16-
override predicate isSink(DataFlow::Node sink) {
17-
exists(MethodCall mc |
18-
mc.getMethodName() = "sink" and
19-
mc.getAnArgument() = sink.asExpr().getExpr()
20-
)
21-
}
22-
}
23-
24-
from DataFlow::PathNode source, DataFlow::PathNode sink, Conf conf
10+
from DataFlow::PathNode source, DataFlow::PathNode sink, DefaultTaintFlowConf conf
2511
where conf.hasFlowPath(source, sink)
2612
select sink, source, sink, "$@", source, source.toString()
Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,47 @@
1-
def sink s
2-
puts s
1+
def taint x
2+
x
33
end
44

5-
sink "taint"
5+
def sink x
6+
puts "SINK: #{x}"
7+
end
8+
9+
sink (taint 1) # $ hasValueFlow=1
610

711
def yielder x
812
yield x
913
end
1014

11-
yielder "no taint" { |x| sink x } # no flow
15+
yielder ("no taint") { |x| sink x }
1216

13-
yielder "taint" { |x| puts x } # no flow
17+
yielder (taint 2) { |x| puts x }
1418

15-
yielder "taint" { |x| sink x } # flow
19+
yielder (taint 3) { |x| sink x } # $ hasValueFlow=3
1620

1721
def apply_lambda (lambda, x)
1822
lambda.call(x)
1923
end
2024

2125
my_lambda = -> (x) { sink x }
22-
apply_lambda(my_lambda, "no taint") # no flow
26+
apply_lambda(my_lambda, "no taint")
2327

2428
my_lambda = -> (x) { puts x }
25-
apply_lambda(my_lambda, "taint") # no flow
29+
apply_lambda(my_lambda, taint(4))
2630

27-
my_lambda = -> (x) { sink x }
28-
apply_lambda(my_lambda, "taint") # flow
31+
my_lambda = -> (x) { sink x } # $ hasValueFlow=5
32+
apply_lambda(my_lambda, taint(5))
2933

3034
my_lambda = lambda { |x| sink x }
31-
apply_lambda(my_lambda, "no taint") # no flow
35+
apply_lambda(my_lambda, "no taint")
3236

3337
my_lambda = lambda { |x| puts x }
34-
apply_lambda(my_lambda, "taint") # no flow
38+
apply_lambda(my_lambda, taint(6))
3539

36-
my_lambda = lambda { |x| sink x }
37-
apply_lambda(my_lambda, "taint") # flow
40+
my_lambda = lambda { |x| sink x } # $ hasValueFlow=7
41+
apply_lambda(my_lambda, taint(7))
3842

39-
MY_LAMBDA1 = lambda { |x| sink x }
40-
apply_lambda(MY_LAMBDA1, "taint") # flow
43+
MY_LAMBDA1 = lambda { |x| sink x } # $ hasValueFlow=8
44+
apply_lambda(MY_LAMBDA1, taint(8))
4145

4246
MY_LAMBDA2 = lambda { |x| puts x }
43-
apply_lambda(MY_LAMBDA2, "taint") # no flow
47+
apply_lambda(MY_LAMBDA2, taint(9))

0 commit comments

Comments
 (0)