Ruby: Add data-flow test for spurious flow through a reverse store

This commit is contained in:
Tom Hvitved
2022-09-26 11:35:17 +02:00
parent df2b586e7c
commit fea1e47daa
2 changed files with 55 additions and 0 deletions

View File

@@ -3367,6 +3367,10 @@ edges
| array_flow.rb:1605:10:1605:10 | c [element] : | array_flow.rb:1605:10:1605:13 | ...[...] |
| array_flow.rb:1610:5:1610:5 | [post] a [element, element 0] : | array_flow.rb:1611:10:1611:10 | a [element, element 0] : |
| array_flow.rb:1610:5:1610:5 | [post] a [element, element 0] : | array_flow.rb:1611:10:1611:10 | a [element, element 0] : |
| array_flow.rb:1610:5:1610:5 | [post] a [element, element 0] : | array_flow.rb:1614:10:1614:10 | a [element, element 0] : |
| array_flow.rb:1610:5:1610:5 | [post] a [element, element 0] : | array_flow.rb:1614:10:1614:10 | a [element, element 0] : |
| array_flow.rb:1610:5:1610:5 | [post] a [element, element 0] : | array_flow.rb:1615:10:1615:10 | a [element, element 0] : |
| array_flow.rb:1610:5:1610:5 | [post] a [element, element 0] : | array_flow.rb:1615:10:1615:10 | a [element, element 0] : |
| array_flow.rb:1610:5:1610:8 | [post] ...[...] [element 0] : | array_flow.rb:1610:5:1610:5 | [post] a [element, element 0] : |
| array_flow.rb:1610:5:1610:8 | [post] ...[...] [element 0] : | array_flow.rb:1610:5:1610:5 | [post] a [element, element 0] : |
| array_flow.rb:1610:15:1610:27 | call to source : | array_flow.rb:1610:5:1610:8 | [post] ...[...] [element 0] : |
@@ -3375,6 +3379,28 @@ edges
| array_flow.rb:1611:10:1611:10 | a [element, element 0] : | array_flow.rb:1611:10:1611:13 | ...[...] [element 0] : |
| array_flow.rb:1611:10:1611:13 | ...[...] [element 0] : | array_flow.rb:1611:10:1611:16 | ...[...] |
| array_flow.rb:1611:10:1611:13 | ...[...] [element 0] : | array_flow.rb:1611:10:1611:16 | ...[...] |
| array_flow.rb:1613:5:1613:5 | [post] a [element 1, element 0] : | array_flow.rb:1614:10:1614:10 | a [element 1, element 0] : |
| array_flow.rb:1613:5:1613:5 | [post] a [element 1, element 0] : | array_flow.rb:1614:10:1614:10 | a [element 1, element 0] : |
| array_flow.rb:1613:5:1613:5 | [post] a [element, element 0] : | array_flow.rb:1614:10:1614:10 | a [element, element 0] : |
| array_flow.rb:1613:5:1613:5 | [post] a [element, element 0] : | array_flow.rb:1614:10:1614:10 | a [element, element 0] : |
| array_flow.rb:1613:5:1613:5 | [post] a [element, element 0] : | array_flow.rb:1615:10:1615:10 | a [element, element 0] : |
| array_flow.rb:1613:5:1613:5 | [post] a [element, element 0] : | array_flow.rb:1615:10:1615:10 | a [element, element 0] : |
| array_flow.rb:1613:5:1613:8 | [post] ...[...] [element 0] : | array_flow.rb:1613:5:1613:5 | [post] a [element 1, element 0] : |
| array_flow.rb:1613:5:1613:8 | [post] ...[...] [element 0] : | array_flow.rb:1613:5:1613:5 | [post] a [element 1, element 0] : |
| array_flow.rb:1613:5:1613:8 | [post] ...[...] [element 0] : | array_flow.rb:1613:5:1613:5 | [post] a [element, element 0] : |
| array_flow.rb:1613:5:1613:8 | [post] ...[...] [element 0] : | array_flow.rb:1613:5:1613:5 | [post] a [element, element 0] : |
| array_flow.rb:1613:15:1613:27 | call to source : | array_flow.rb:1613:5:1613:8 | [post] ...[...] [element 0] : |
| array_flow.rb:1613:15:1613:27 | call to source : | array_flow.rb:1613:5:1613:8 | [post] ...[...] [element 0] : |
| array_flow.rb:1614:10:1614:10 | a [element 1, element 0] : | array_flow.rb:1614:10:1614:13 | ...[...] [element 0] : |
| array_flow.rb:1614:10:1614:10 | a [element 1, element 0] : | array_flow.rb:1614:10:1614:13 | ...[...] [element 0] : |
| array_flow.rb:1614:10:1614:10 | a [element, element 0] : | array_flow.rb:1614:10:1614:13 | ...[...] [element 0] : |
| array_flow.rb:1614:10:1614:10 | a [element, element 0] : | array_flow.rb:1614:10:1614:13 | ...[...] [element 0] : |
| array_flow.rb:1614:10:1614:13 | ...[...] [element 0] : | array_flow.rb:1614:10:1614:16 | ...[...] |
| array_flow.rb:1614:10:1614:13 | ...[...] [element 0] : | array_flow.rb:1614:10:1614:16 | ...[...] |
| array_flow.rb:1615:10:1615:10 | a [element, element 0] : | array_flow.rb:1615:10:1615:13 | ...[...] [element 0] : |
| array_flow.rb:1615:10:1615:10 | a [element, element 0] : | array_flow.rb:1615:10:1615:13 | ...[...] [element 0] : |
| array_flow.rb:1615:10:1615:13 | ...[...] [element 0] : | array_flow.rb:1615:10:1615:16 | ...[...] |
| array_flow.rb:1615:10:1615:13 | ...[...] [element 0] : | array_flow.rb:1615:10:1615:16 | ...[...] |
nodes
| array_flow.rb:2:9:2:20 | * ... [element 0] : | semmle.label | * ... [element 0] : |
| array_flow.rb:2:9:2:20 | * ... [element 0] : | semmle.label | * ... [element 0] : |
@@ -7010,6 +7036,28 @@ nodes
| array_flow.rb:1611:10:1611:13 | ...[...] [element 0] : | semmle.label | ...[...] [element 0] : |
| array_flow.rb:1611:10:1611:16 | ...[...] | semmle.label | ...[...] |
| array_flow.rb:1611:10:1611:16 | ...[...] | semmle.label | ...[...] |
| array_flow.rb:1613:5:1613:5 | [post] a [element 1, element 0] : | semmle.label | [post] a [element 1, element 0] : |
| array_flow.rb:1613:5:1613:5 | [post] a [element 1, element 0] : | semmle.label | [post] a [element 1, element 0] : |
| array_flow.rb:1613:5:1613:5 | [post] a [element, element 0] : | semmle.label | [post] a [element, element 0] : |
| array_flow.rb:1613:5:1613:5 | [post] a [element, element 0] : | semmle.label | [post] a [element, element 0] : |
| array_flow.rb:1613:5:1613:8 | [post] ...[...] [element 0] : | semmle.label | [post] ...[...] [element 0] : |
| array_flow.rb:1613:5:1613:8 | [post] ...[...] [element 0] : | semmle.label | [post] ...[...] [element 0] : |
| array_flow.rb:1613:15:1613:27 | call to source : | semmle.label | call to source : |
| array_flow.rb:1613:15:1613:27 | call to source : | semmle.label | call to source : |
| array_flow.rb:1614:10:1614:10 | a [element 1, element 0] : | semmle.label | a [element 1, element 0] : |
| array_flow.rb:1614:10:1614:10 | a [element 1, element 0] : | semmle.label | a [element 1, element 0] : |
| array_flow.rb:1614:10:1614:10 | a [element, element 0] : | semmle.label | a [element, element 0] : |
| array_flow.rb:1614:10:1614:10 | a [element, element 0] : | semmle.label | a [element, element 0] : |
| array_flow.rb:1614:10:1614:13 | ...[...] [element 0] : | semmle.label | ...[...] [element 0] : |
| array_flow.rb:1614:10:1614:13 | ...[...] [element 0] : | semmle.label | ...[...] [element 0] : |
| array_flow.rb:1614:10:1614:16 | ...[...] | semmle.label | ...[...] |
| array_flow.rb:1614:10:1614:16 | ...[...] | semmle.label | ...[...] |
| array_flow.rb:1615:10:1615:10 | a [element, element 0] : | semmle.label | a [element, element 0] : |
| array_flow.rb:1615:10:1615:10 | a [element, element 0] : | semmle.label | a [element, element 0] : |
| array_flow.rb:1615:10:1615:13 | ...[...] [element 0] : | semmle.label | ...[...] [element 0] : |
| array_flow.rb:1615:10:1615:13 | ...[...] [element 0] : | semmle.label | ...[...] [element 0] : |
| array_flow.rb:1615:10:1615:16 | ...[...] | semmle.label | ...[...] |
| array_flow.rb:1615:10:1615:16 | ...[...] | semmle.label | ...[...] |
subpaths
#select
| array_flow.rb:3:10:3:13 | ...[...] | array_flow.rb:2:10:2:20 | call to source : | array_flow.rb:3:10:3:13 | ...[...] | $@ | array_flow.rb:2:10:2:20 | call to source : | call to source : |
@@ -7694,3 +7742,7 @@ subpaths
| array_flow.rb:1605:10:1605:13 | ...[...] | array_flow.rb:1600:16:1600:28 | call to source : | array_flow.rb:1605:10:1605:13 | ...[...] | $@ | array_flow.rb:1600:16:1600:28 | call to source : | call to source : |
| array_flow.rb:1605:10:1605:13 | ...[...] | array_flow.rb:1601:13:1601:25 | call to source : | array_flow.rb:1605:10:1605:13 | ...[...] | $@ | array_flow.rb:1601:13:1601:25 | call to source : | call to source : |
| array_flow.rb:1611:10:1611:16 | ...[...] | array_flow.rb:1610:15:1610:27 | call to source : | array_flow.rb:1611:10:1611:16 | ...[...] | $@ | array_flow.rb:1610:15:1610:27 | call to source : | call to source : |
| array_flow.rb:1614:10:1614:16 | ...[...] | array_flow.rb:1610:15:1610:27 | call to source : | array_flow.rb:1614:10:1614:16 | ...[...] | $@ | array_flow.rb:1610:15:1610:27 | call to source : | call to source : |
| array_flow.rb:1614:10:1614:16 | ...[...] | array_flow.rb:1613:15:1613:27 | call to source : | array_flow.rb:1614:10:1614:16 | ...[...] | $@ | array_flow.rb:1613:15:1613:27 | call to source : | call to source : |
| array_flow.rb:1615:10:1615:16 | ...[...] | array_flow.rb:1610:15:1610:27 | call to source : | array_flow.rb:1615:10:1615:16 | ...[...] | $@ | array_flow.rb:1610:15:1610:27 | call to source : | call to source : |
| array_flow.rb:1615:10:1615:16 | ...[...] | array_flow.rb:1613:15:1613:27 | call to source : | array_flow.rb:1615:10:1615:16 | ...[...] | $@ | array_flow.rb:1613:15:1613:27 | call to source : | call to source : |

View File

@@ -1610,4 +1610,7 @@ def m136(i)
a[i][0] = source(136.1)
sink(a[0][0]) # $ hasValueFlow=136.1
sink(a[0][1])
a[1][0] = source(136.2)
sink(a[1][0]) # $ hasValueFlow=136.2 $ SPURIOUS hasValueFlow=136.1
sink(a[2][0]) # $ hasValueFlow=136.1 $ SPURIOUS hasValueFlow=136.2
end