Skip to content

Commit 8972133

Browse files
authored
Merge pull request #15498 from hvitved/ruby/ctx-sensitivity-test
Ruby: Add another dataflow test
2 parents 16e62e6 + 792f302 commit 8972133

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,11 @@ edges
9292
| call_sensitivity.rb:199:16:199:23 | call to taint | call_sensitivity.rb:199:15:199:24 | ( ... ) |
9393
| call_sensitivity.rb:199:30:199:30 | x | call_sensitivity.rb:200:8:200:8 | x |
9494
| call_sensitivity.rb:203:26:203:26 | x | call_sensitivity.rb:204:8:204:8 | x |
95+
| call_sensitivity.rb:207:16:207:16 | y | call_sensitivity.rb:209:9:209:9 | y |
96+
| call_sensitivity.rb:209:9:209:9 | y | call_sensitivity.rb:214:9:214:9 | x |
97+
| call_sensitivity.rb:214:9:214:9 | x | call_sensitivity.rb:215:10:215:10 | x |
98+
| call_sensitivity.rb:222:15:222:24 | ( ... ) | call_sensitivity.rb:207:16:207:16 | y |
99+
| call_sensitivity.rb:222:16:222:23 | call to taint | call_sensitivity.rb:222:15:222:24 | ( ... ) |
95100
nodes
96101
| call_sensitivity.rb:9:6:9:14 | ( ... ) | semmle.label | ( ... ) |
97102
| call_sensitivity.rb:9:7:9:13 | call to taint | semmle.label | call to taint |
@@ -191,6 +196,12 @@ nodes
191196
| call_sensitivity.rb:200:8:200:8 | x | semmle.label | x |
192197
| call_sensitivity.rb:203:26:203:26 | x | semmle.label | x |
193198
| call_sensitivity.rb:204:8:204:8 | x | semmle.label | x |
199+
| call_sensitivity.rb:207:16:207:16 | y | semmle.label | y |
200+
| call_sensitivity.rb:209:9:209:9 | y | semmle.label | y |
201+
| call_sensitivity.rb:214:9:214:9 | x | semmle.label | x |
202+
| call_sensitivity.rb:215:10:215:10 | x | semmle.label | x |
203+
| call_sensitivity.rb:222:15:222:24 | ( ... ) | semmle.label | ( ... ) |
204+
| call_sensitivity.rb:222:16:222:23 | call to taint | semmle.label | call to taint |
194205
subpaths
195206
#select
196207
| 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 |
@@ -218,6 +229,7 @@ subpaths
218229
| call_sensitivity.rb:105:10:105:10 | x | call_sensitivity.rb:187:12:187:19 | call to taint | call_sensitivity.rb:105:10:105:10 | x | $@ | call_sensitivity.rb:187:12:187:19 | call to taint | call to taint |
219230
| call_sensitivity.rb:200:8:200:8 | x | call_sensitivity.rb:199:16:199:23 | call to taint | call_sensitivity.rb:200:8:200:8 | x | $@ | call_sensitivity.rb:199:16:199:23 | call to taint | call to taint |
220231
| call_sensitivity.rb:204:8:204:8 | x | call_sensitivity.rb:199:16:199:23 | call to taint | call_sensitivity.rb:204:8:204:8 | x | $@ | call_sensitivity.rb:199:16:199:23 | call to taint | call to taint |
232+
| call_sensitivity.rb:215:10:215:10 | x | call_sensitivity.rb:222:16:222:23 | call to taint | call_sensitivity.rb:215:10:215:10 | x | $@ | call_sensitivity.rb:222:16:222:23 | call to taint | call to taint |
221233
mayBenefitFromCallContext
222234
| call_sensitivity.rb:6:5:6:21 | call to puts |
223235
| call_sensitivity.rb:22:5:22:18 | call to call |
@@ -245,6 +257,9 @@ mayBenefitFromCallContext
245257
| call_sensitivity.rb:175:3:175:12 | call to new |
246258
| call_sensitivity.rb:183:5:183:25 | call to puts |
247259
| call_sensitivity.rb:194:3:196:5 | call to invoke_block1 |
260+
| call_sensitivity.rb:208:6:208:21 | call to respond_to? |
261+
| call_sensitivity.rb:209:5:209:9 | call to m |
262+
| call_sensitivity.rb:215:5:215:10 | call to sink |
248263
viableImplInCallContext
249264
| call_sensitivity.rb:51:5:51:10 | call to sink | call_sensitivity.rb:55:5:55:13 | call to method1 | call_sensitivity.rb:5:1:7:3 | sink |
250265
| call_sensitivity.rb:51:5:51:10 | call to sink | call_sensitivity.rb:63:5:63:16 | call to method1 | call_sensitivity.rb:5:1:7:3 | sink |
@@ -302,3 +317,5 @@ viableImplInCallContext
302317
| call_sensitivity.rb:175:3:175:12 | call to new | call_sensitivity.rb:179:1:179:20 | call to create | call_sensitivity.rb:156:3:158:5 | initialize |
303318
| call_sensitivity.rb:194:3:196:5 | call to invoke_block1 | call_sensitivity.rb:199:1:201:3 | call to invoke_block2 | call_sensitivity.rb:189:1:191:3 | invoke_block1 |
304319
| call_sensitivity.rb:194:3:196:5 | call to invoke_block1 | call_sensitivity.rb:203:1:205:3 | call to invoke_block2 | call_sensitivity.rb:189:1:191:3 | invoke_block1 |
320+
| call_sensitivity.rb:209:5:209:9 | call to m | call_sensitivity.rb:222:1:222:25 | call to call_m | call_sensitivity.rb:214:3:216:5 | m |
321+
| call_sensitivity.rb:215:5:215:10 | call to sink | call_sensitivity.rb:209:5:209:9 | call to m | call_sensitivity.rb:5:1:7:3 | sink |

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,3 +203,21 @@ def invoke_block2 x
203203
invoke_block2 "safe" do |x|
204204
sink x # $ SPURIOUS hasValueFlow=37
205205
end
206+
207+
def call_m (x, y)
208+
if x.respond_to? :m
209+
x.m y
210+
end
211+
end
212+
213+
class D
214+
def m x
215+
sink x # $ hasValueFlow=38
216+
end
217+
end
218+
219+
class E
220+
end
221+
222+
call_m(D.new, (taint 38))
223+
call_m(E.new, (taint 39))

0 commit comments

Comments
 (0)