Skip to content

Commit fcec8a8

Browse files
committed
Address comments
1 parent ab4935f commit fcec8a8

File tree

6 files changed

+31
-21
lines changed

6 files changed

+31
-21
lines changed

ruby/ql/lib/codeql/ruby/ast/internal/Variable.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ private module Cached {
329329

330330
private class Access extends Ruby::Token {
331331
Access() {
332-
access(this, _) or
332+
access(this.(Ruby::Identifier), _) or
333333
this instanceof Ruby::GlobalVariable or
334334
this instanceof Ruby::InstanceVariable or
335335
this instanceof Ruby::ClassVariable or

ruby/ql/lib/codeql/ruby/controlflow/internal/ControlFlowGraphImpl.qll

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -712,7 +712,8 @@ module Trees {
712712
c.(MatchingCompletion).getValue() = false
713713
or
714714
last(this.getVariableAccess(), last, any(SimpleCompletion x)) and
715-
c.(MatchingCompletion).getValue() = true
715+
c.(MatchingCompletion).getValue() = true and
716+
not c instanceof NestedCompletion
716717
}
717718

718719
final override predicate succ(AstNode pred, AstNode succ, Completion c) {

ruby/ql/test/library-tests/dataflow/local/DataflowStep.expected

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -70,16 +70,17 @@
7070
| local_dataflow.rb:50:18:50:18 | [post] x | local_dataflow.rb:51:20:51:20 | x |
7171
| local_dataflow.rb:50:18:50:18 | x | local_dataflow.rb:51:20:51:20 | x |
7272
| local_dataflow.rb:51:9:51:15 | "break" | local_dataflow.rb:51:3:51:15 | break |
73-
| local_dataflow.rb:60:1:89:3 | self (test_case) | local_dataflow.rb:78:12:78:20 | self |
74-
| local_dataflow.rb:60:1:89:3 | self in test_case | local_dataflow.rb:78:12:78:20 | self |
75-
| local_dataflow.rb:60:1:89:3 | self in test_case | local_dataflow.rb:79:18:79:24 | self |
76-
| local_dataflow.rb:60:1:89:3 | self in test_case | local_dataflow.rb:80:22:80:28 | self |
77-
| local_dataflow.rb:60:1:89:3 | self in test_case | local_dataflow.rb:82:6:82:12 | self |
78-
| local_dataflow.rb:60:1:89:3 | self in test_case | local_dataflow.rb:83:6:83:12 | self |
79-
| local_dataflow.rb:60:1:89:3 | self in test_case | local_dataflow.rb:84:6:84:12 | self |
80-
| local_dataflow.rb:60:1:89:3 | self in test_case | local_dataflow.rb:85:20:85:26 | self |
81-
| local_dataflow.rb:60:1:89:3 | self in test_case | local_dataflow.rb:86:26:86:32 | self |
82-
| local_dataflow.rb:60:1:89:3 | self in test_case | local_dataflow.rb:87:18:87:24 | self |
73+
| local_dataflow.rb:60:1:90:3 | self (test_case) | local_dataflow.rb:78:12:78:20 | self |
74+
| local_dataflow.rb:60:1:90:3 | self in test_case | local_dataflow.rb:78:12:78:20 | self |
75+
| local_dataflow.rb:60:1:90:3 | self in test_case | local_dataflow.rb:79:18:79:24 | self |
76+
| local_dataflow.rb:60:1:90:3 | self in test_case | local_dataflow.rb:80:22:80:28 | self |
77+
| local_dataflow.rb:60:1:90:3 | self in test_case | local_dataflow.rb:82:6:82:12 | self |
78+
| local_dataflow.rb:60:1:90:3 | self in test_case | local_dataflow.rb:83:6:83:12 | self |
79+
| local_dataflow.rb:60:1:90:3 | self in test_case | local_dataflow.rb:84:6:84:12 | self |
80+
| local_dataflow.rb:60:1:90:3 | self in test_case | local_dataflow.rb:85:20:85:26 | self |
81+
| local_dataflow.rb:60:1:90:3 | self in test_case | local_dataflow.rb:86:26:86:32 | self |
82+
| local_dataflow.rb:60:1:90:3 | self in test_case | local_dataflow.rb:87:18:87:24 | self |
83+
| local_dataflow.rb:60:1:90:3 | self in test_case | local_dataflow.rb:88:3:88:9 | self |
8384
| local_dataflow.rb:60:15:60:15 | x | local_dataflow.rb:60:15:60:15 | x |
8485
| local_dataflow.rb:60:15:60:15 | x | local_dataflow.rb:61:12:61:12 | x |
8586
| local_dataflow.rb:61:7:68:5 | case ... | local_dataflow.rb:61:3:68:5 | ... = ... |
@@ -98,6 +99,8 @@
9899
| local_dataflow.rb:66:3:67:5 | else ... | local_dataflow.rb:61:7:68:5 | case ... |
99100
| local_dataflow.rb:67:5:67:5 | x | local_dataflow.rb:66:3:67:5 | else ... |
100101
| local_dataflow.rb:67:5:67:5 | x | local_dataflow.rb:69:12:69:12 | x |
102+
| local_dataflow.rb:69:3:76:5 | ... = ... | local_dataflow.rb:88:8:88:8 | z |
103+
| local_dataflow.rb:69:7:76:5 | case ... | local_dataflow.rb:69:3:76:5 | ... = ... |
101104
| local_dataflow.rb:69:7:76:5 | case ... | local_dataflow.rb:69:3:76:5 | ... = ... |
102105
| local_dataflow.rb:69:12:69:12 | x | local_dataflow.rb:71:13:71:13 | x |
103106
| local_dataflow.rb:69:12:69:12 | x | local_dataflow.rb:73:7:73:7 | x |
@@ -110,7 +113,7 @@
110113
| local_dataflow.rb:73:7:73:7 | x | local_dataflow.rb:72:7:73:7 | then ... |
111114
| local_dataflow.rb:74:3:75:6 | else ... | local_dataflow.rb:69:7:76:5 | case ... |
112115
| local_dataflow.rb:75:6:75:6 | x | local_dataflow.rb:74:3:75:6 | else ... |
113-
| local_dataflow.rb:78:7:88:3 | case ... | local_dataflow.rb:78:3:88:3 | ... = ... |
116+
| local_dataflow.rb:78:7:89:3 | case ... | local_dataflow.rb:78:3:89:3 | ... = ... |
114117
| local_dataflow.rb:78:12:78:20 | [post] self | local_dataflow.rb:79:18:79:24 | self |
115118
| local_dataflow.rb:78:12:78:20 | [post] self | local_dataflow.rb:80:22:80:28 | self |
116119
| local_dataflow.rb:78:12:78:20 | [post] self | local_dataflow.rb:82:6:82:12 | self |
@@ -124,28 +127,30 @@
124127
| local_dataflow.rb:78:12:78:20 | self | local_dataflow.rb:86:26:86:32 | self |
125128
| local_dataflow.rb:78:12:78:20 | self | local_dataflow.rb:87:18:87:24 | self |
126129
| local_dataflow.rb:79:11:79:11 | b | local_dataflow.rb:79:23:79:23 | b |
127-
| local_dataflow.rb:79:13:79:43 | then ... | local_dataflow.rb:78:7:88:3 | case ... |
130+
| local_dataflow.rb:79:13:79:43 | then ... | local_dataflow.rb:78:7:89:3 | case ... |
128131
| local_dataflow.rb:79:18:79:24 | call to sink | local_dataflow.rb:79:13:79:43 | then ... |
129132
| local_dataflow.rb:80:6:80:6 | a | local_dataflow.rb:80:11:80:11 | a |
130133
| local_dataflow.rb:80:11:80:11 | [post] a | local_dataflow.rb:80:27:80:27 | a |
131134
| local_dataflow.rb:80:11:80:11 | a | local_dataflow.rb:80:27:80:27 | a |
132-
| local_dataflow.rb:80:17:80:47 | then ... | local_dataflow.rb:78:7:88:3 | case ... |
135+
| local_dataflow.rb:80:17:80:47 | then ... | local_dataflow.rb:78:7:89:3 | case ... |
133136
| local_dataflow.rb:80:22:80:28 | call to sink | local_dataflow.rb:80:17:80:47 | then ... |
134137
| local_dataflow.rb:81:7:81:7 | c | local_dataflow.rb:82:11:82:11 | c |
135138
| local_dataflow.rb:81:11:81:11 | d | local_dataflow.rb:83:11:83:11 | d |
136139
| local_dataflow.rb:81:14:81:14 | e | local_dataflow.rb:84:11:84:11 | e |
137-
| local_dataflow.rb:81:18:84:32 | then ... | local_dataflow.rb:78:7:88:3 | case ... |
140+
| local_dataflow.rb:81:18:84:32 | then ... | local_dataflow.rb:78:7:89:3 | case ... |
138141
| local_dataflow.rb:81:23:84:13 | call to [] | local_dataflow.rb:81:18:84:32 | then ... |
139142
| local_dataflow.rb:82:6:82:12 | [post] self | local_dataflow.rb:83:6:83:12 | self |
140143
| local_dataflow.rb:82:6:82:12 | self | local_dataflow.rb:83:6:83:12 | self |
141144
| local_dataflow.rb:83:6:83:12 | [post] self | local_dataflow.rb:84:6:84:12 | self |
142145
| local_dataflow.rb:83:6:83:12 | self | local_dataflow.rb:84:6:84:12 | self |
143146
| local_dataflow.rb:85:11:85:11 | f | local_dataflow.rb:85:25:85:25 | f |
144-
| local_dataflow.rb:85:15:85:45 | then ... | local_dataflow.rb:78:7:88:3 | case ... |
147+
| local_dataflow.rb:85:15:85:45 | then ... | local_dataflow.rb:78:7:89:3 | case ... |
145148
| local_dataflow.rb:85:20:85:26 | call to sink | local_dataflow.rb:85:15:85:45 | then ... |
146149
| local_dataflow.rb:86:16:86:16 | g | local_dataflow.rb:86:31:86:31 | g |
147-
| local_dataflow.rb:86:21:86:51 | then ... | local_dataflow.rb:78:7:88:3 | case ... |
150+
| local_dataflow.rb:86:21:86:51 | then ... | local_dataflow.rb:78:7:89:3 | case ... |
148151
| local_dataflow.rb:86:26:86:32 | call to sink | local_dataflow.rb:86:21:86:51 | then ... |
149152
| local_dataflow.rb:87:8:87:8 | x | local_dataflow.rb:87:23:87:23 | x |
150-
| local_dataflow.rb:87:13:87:43 | then ... | local_dataflow.rb:78:7:88:3 | case ... |
151-
| local_dataflow.rb:87:18:87:24 | call to sink | local_dataflow.rb:87:13:87:43 | then ... |
153+
| local_dataflow.rb:87:13:88:28 | then ... | local_dataflow.rb:78:7:89:3 | case ... |
154+
| local_dataflow.rb:87:18:87:24 | [post] self | local_dataflow.rb:88:3:88:9 | self |
155+
| local_dataflow.rb:87:18:87:24 | self | local_dataflow.rb:88:3:88:9 | self |
156+
| local_dataflow.rb:88:3:88:9 | call to sink | local_dataflow.rb:87:13:88:28 | then ... |

ruby/ql/test/library-tests/dataflow/local/Nodes.expected

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ ret
1212
| local_dataflow.rb:50:3:50:13 | next |
1313
| local_dataflow.rb:51:3:51:15 | break |
1414
| local_dataflow.rb:52:3:52:10 | "normal" |
15-
| local_dataflow.rb:78:3:88:3 | ... = ... |
15+
| local_dataflow.rb:78:3:89:3 | ... = ... |
1616
arg
1717
| local_dataflow.rb:3:8:3:10 | self | local_dataflow.rb:3:8:3:10 | call to p | self |
1818
| local_dataflow.rb:3:10:3:10 | a | local_dataflow.rb:3:8:3:10 | call to p | position 0 |
@@ -73,3 +73,5 @@ arg
7373
| local_dataflow.rb:86:31:86:31 | g | local_dataflow.rb:86:26:86:32 | call to sink | position 0 |
7474
| local_dataflow.rb:87:18:87:24 | self | local_dataflow.rb:87:18:87:24 | call to sink | self |
7575
| local_dataflow.rb:87:23:87:23 | x | local_dataflow.rb:87:18:87:24 | call to sink | position 0 |
76+
| local_dataflow.rb:88:3:88:9 | self | local_dataflow.rb:88:3:88:9 | call to sink | self |
77+
| local_dataflow.rb:88:8:88:8 | z | local_dataflow.rb:88:3:88:9 | call to sink | position 0 |

ruby/ql/test/library-tests/dataflow/local/TaintflowStep.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
failures
2+
| local_dataflow.rb:88:11:88:28 | # $ hasTaintFlow=1 | Missing result:hasTaintFlow=1 |
23
edges
34
| local_dataflow.rb:78:12:78:20 | call to source : | local_dataflow.rb:79:23:79:23 | b |
45
| local_dataflow.rb:78:12:78:20 | call to source : | local_dataflow.rb:80:27:80:27 | a |

ruby/ql/test/library-tests/dataflow/local/local_dataflow.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ def test_case x
8585
in { a: f } then sink(f) # $ hasTaintFlow=1
8686
in { foo: 1, g: } then sink(g) # $ hasTaintFlow=1
8787
in { x: } then sink(x) # $ hasTaintFlow=1
88+
sink(z) # $ hasTaintFlow=1
8889
end
8990
end
9091

0 commit comments

Comments
 (0)