Skip to content

Commit fc4026f

Browse files
committed
Ruby: add tests for '[]' and '[]=' method summaries
1 parent f2ef54b commit fc4026f

File tree

3 files changed

+19
-0
lines changed

3 files changed

+19
-0
lines changed

ruby/ql/test/library-tests/dataflow/summaries/Summaries.expected

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ edges
4444
| summaries.rb:1:1:1:7 | tainted | summaries.rb:147:16:147:22 | tainted |
4545
| summaries.rb:1:1:1:7 | tainted | summaries.rb:150:39:150:45 | tainted |
4646
| summaries.rb:1:1:1:7 | tainted | summaries.rb:150:39:150:45 | tainted |
47+
| summaries.rb:1:1:1:7 | tainted | summaries.rb:154:5:154:11 | tainted |
48+
| summaries.rb:1:1:1:7 | tainted | summaries.rb:154:5:154:11 | tainted |
49+
| summaries.rb:1:1:1:7 | tainted | summaries.rb:155:10:155:16 | ... = ... |
50+
| summaries.rb:1:1:1:7 | tainted | summaries.rb:155:10:155:16 | ... = ... |
4751
| summaries.rb:1:11:1:36 | call to identity | summaries.rb:1:1:1:7 | tainted |
4852
| summaries.rb:1:11:1:36 | call to identity | summaries.rb:1:1:1:7 | tainted |
4953
| summaries.rb:1:20:1:36 | call to source | summaries.rb:1:11:1:36 | call to identity |
@@ -231,6 +235,8 @@ edges
231235
| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:145:26:145:32 | tainted |
232236
| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:147:16:147:22 | tainted |
233237
| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:150:39:150:45 | tainted |
238+
| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:154:5:154:11 | tainted |
239+
| summaries.rb:122:16:122:22 | [post] tainted | summaries.rb:155:10:155:16 | ... = ... |
234240
| summaries.rb:122:16:122:22 | tainted | summaries.rb:122:16:122:22 | [post] tainted |
235241
| summaries.rb:122:16:122:22 | tainted | summaries.rb:122:25:122:25 | [post] y |
236242
| summaries.rb:122:16:122:22 | tainted | summaries.rb:122:33:122:33 | [post] z |
@@ -474,6 +480,10 @@ nodes
474480
| summaries.rb:147:16:147:22 | tainted | semmle.label | tainted |
475481
| summaries.rb:150:39:150:45 | tainted | semmle.label | tainted |
476482
| summaries.rb:150:39:150:45 | tainted | semmle.label | tainted |
483+
| summaries.rb:154:5:154:11 | tainted | semmle.label | tainted |
484+
| summaries.rb:154:5:154:11 | tainted | semmle.label | tainted |
485+
| summaries.rb:155:10:155:16 | ... = ... | semmle.label | ... = ... |
486+
| summaries.rb:155:10:155:16 | ... = ... | semmle.label | ... = ... |
477487
subpaths
478488
invalidSpecComponent
479489
#select
@@ -573,6 +583,10 @@ invalidSpecComponent
573583
| summaries.rb:147:16:147:22 | tainted | summaries.rb:1:20:1:36 | call to source | summaries.rb:147:16:147:22 | tainted | $@ | summaries.rb:1:20:1:36 | call to source | call to source |
574584
| summaries.rb:150:39:150:45 | tainted | summaries.rb:1:20:1:36 | call to source | summaries.rb:150:39:150:45 | tainted | $@ | summaries.rb:1:20:1:36 | call to source | call to source |
575585
| summaries.rb:150:39:150:45 | tainted | summaries.rb:1:20:1:36 | call to source | summaries.rb:150:39:150:45 | tainted | $@ | summaries.rb:1:20:1:36 | call to source | call to source |
586+
| summaries.rb:154:5:154:11 | tainted | summaries.rb:1:20:1:36 | call to source | summaries.rb:154:5:154:11 | tainted | $@ | summaries.rb:1:20:1:36 | call to source | call to source |
587+
| summaries.rb:154:5:154:11 | tainted | summaries.rb:1:20:1:36 | call to source | summaries.rb:154:5:154:11 | tainted | $@ | summaries.rb:1:20:1:36 | call to source | call to source |
588+
| summaries.rb:155:10:155:16 | ... = ... | summaries.rb:1:20:1:36 | call to source | summaries.rb:155:10:155:16 | ... = ... | $@ | summaries.rb:1:20:1:36 | call to source | call to source |
589+
| summaries.rb:155:10:155:16 | ... = ... | summaries.rb:1:20:1:36 | call to source | summaries.rb:155:10:155:16 | ... = ... | $@ | summaries.rb:1:20:1:36 | call to source | call to source |
576590
warning
577591
| CSV type row should have 3 columns but has 1: TooFewColumns |
578592
| CSV type row should have 3 columns but has 6: TooManyColumns;;Member[Foo].Instance;too;many;columns |

ruby/ql/test/library-tests/dataflow/summaries/Summaries.ql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,8 @@ private class SinkFromModel extends ModelInput::SinkModelCsv {
145145
"Foo!;Method[getSinks].ReturnValue.Element[any].Method[mySink].Argument[0];test-sink", //
146146
"Foo!;Method[arraySink].Argument[0].Element[any];test-sink", //
147147
"Foo!;Method[secondArrayElementIsSink].Argument[0].Element[1];test-sink", //
148+
"Foo!;Method['[]'].Argument[0];test-sink", //
149+
"Bar!;Method['[]='].Argument[1];test-sink", //
148150
]
149151
}
150152
}

ruby/ql/test/library-tests/dataflow/summaries/summaries.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,3 +150,6 @@ def userDefinedFunction(x, y)
150150
Foo.secondArrayElementIsSink(["safe", tainted, "safe"]) # $ hasValueFlow=tainted
151151
Foo.secondArrayElementIsSink(["safe", "safe", tainted])
152152
Foo.secondArrayElementIsSink([tainted] * 10) # $ MISSING: hasValueFlow=tainted
153+
154+
Foo[tainted] # $ hasValueFlow=tainted
155+
Bar[1] = tainted # $ hasValueFlow=tainted

0 commit comments

Comments
 (0)