Skip to content

Commit cb5ad8b

Browse files
committed
Ruby: Don't include Argument[self] in Argument[any]
For flow-sumamries
1 parent 051754c commit cb5ad8b

File tree

3 files changed

+4
-9
lines changed

3 files changed

+4
-9
lines changed

ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowDispatch.qll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -477,8 +477,8 @@ class ParameterPosition extends TParameterPosition {
477477
predicate isKeyword(string name) { this = TKeywordParameterPosition(name) }
478478

479479
/**
480-
* Holds if this position represents any parameter. This includes both positional
481-
* and named parameters.
480+
* Holds if this position represents any parameter, except `self` parameters. This
481+
* includes both positional, named, and block parameters.
482482
*/
483483
predicate isAny() { this = TAnyParameterPosition() }
484484

@@ -539,5 +539,5 @@ predicate parameterMatch(ParameterPosition ppos, ArgumentPosition apos) {
539539
or
540540
exists(string name | ppos.isKeyword(name) and apos.isKeyword(name))
541541
or
542-
ppos.isAny() and exists(apos)
542+
ppos.isAny() and not apos.isSelf()
543543
}

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

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,7 @@ edges
8888
| summaries.rb:82:1:82:1 | a [element 2] : | summaries.rb:82:1:82:1 | [post] a [element 2] : |
8989
| summaries.rb:85:6:85:6 | a [element 2] : | summaries.rb:85:6:85:9 | ...[...] |
9090
| summaries.rb:85:6:85:6 | a [element 2] : | summaries.rb:85:6:85:9 | ...[...] |
91-
| summaries.rb:90:1:90:1 | [post] x : | summaries.rb:91:6:91:6 | x |
9291
| summaries.rb:90:16:90:22 | [post] tainted : | summaries.rb:96:14:96:20 | tainted : |
93-
| summaries.rb:90:16:90:22 | tainted : | summaries.rb:90:1:90:1 | [post] x : |
9492
| summaries.rb:90:16:90:22 | tainted : | summaries.rb:90:16:90:22 | [post] tainted : |
9593
| summaries.rb:90:16:90:22 | tainted : | summaries.rb:90:25:90:25 | [post] y : |
9694
| summaries.rb:90:16:90:22 | tainted : | summaries.rb:90:33:90:33 | [post] z : |
@@ -195,12 +193,10 @@ nodes
195193
| summaries.rb:85:6:85:6 | a [element 2] : | semmle.label | a [element 2] : |
196194
| summaries.rb:85:6:85:9 | ...[...] | semmle.label | ...[...] |
197195
| summaries.rb:85:6:85:9 | ...[...] | semmle.label | ...[...] |
198-
| summaries.rb:90:1:90:1 | [post] x : | semmle.label | [post] x : |
199196
| summaries.rb:90:16:90:22 | [post] tainted : | semmle.label | [post] tainted : |
200197
| summaries.rb:90:16:90:22 | tainted : | semmle.label | tainted : |
201198
| summaries.rb:90:25:90:25 | [post] y : | semmle.label | [post] y : |
202199
| summaries.rb:90:33:90:33 | [post] z : | semmle.label | [post] z : |
203-
| summaries.rb:91:6:91:6 | x | semmle.label | x |
204200
| summaries.rb:92:6:92:6 | y | semmle.label | y |
205201
| summaries.rb:93:6:93:6 | z | semmle.label | z |
206202
| summaries.rb:96:1:96:1 | [post] x : | semmle.label | [post] x : |
@@ -250,7 +246,6 @@ invalidSpecComponent
250246
| summaries.rb:80:6:80:9 | ...[...] | summaries.rb:74:15:74:29 | call to source : | summaries.rb:80:6:80:9 | ...[...] | $@ | summaries.rb:74:15:74:29 | call to source : | call to source : |
251247
| summaries.rb:85:6:85:9 | ...[...] | summaries.rb:74:32:74:46 | call to source : | summaries.rb:85:6:85:9 | ...[...] | $@ | summaries.rb:74:32:74:46 | call to source : | call to source : |
252248
| summaries.rb:85:6:85:9 | ...[...] | summaries.rb:74:32:74:46 | call to source : | summaries.rb:85:6:85:9 | ...[...] | $@ | summaries.rb:74:32:74:46 | call to source : | call to source : |
253-
| summaries.rb:91:6:91:6 | x | summaries.rb:1:20:1:36 | call to source : | summaries.rb:91:6:91:6 | x | $@ | summaries.rb:1:20:1:36 | call to source : | call to source : |
254249
| summaries.rb:92:6:92:6 | y | summaries.rb:1:20:1:36 | call to source : | summaries.rb:92:6:92:6 | y | $@ | summaries.rb:1:20:1:36 | call to source : | call to source : |
255250
| summaries.rb:93:6:93:6 | z | summaries.rb:1:20:1:36 | call to source : | summaries.rb:93:6:93:6 | z | $@ | summaries.rb:1:20:1:36 | call to source : | call to source : |
256251
| summaries.rb:97:6:97:6 | x | summaries.rb:1:20:1:36 | call to source : | summaries.rb:97:6:97:6 | x | $@ | summaries.rb:1:20:1:36 | call to source : | call to source : |

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ def userDefinedFunction(x, y)
8888
y = []
8989
z = []
9090
x.flowToAnyArg(tainted, y, key: z)
91-
sink(x) # $ hasTaintFlow=tainted
91+
sink(x)
9292
sink(y) # $ hasTaintFlow=tainted
9393
sink(z) # $ hasTaintFlow=tainted
9494

0 commit comments

Comments
 (0)