mirror of
https://github.com/github/codeql.git
synced 2026-04-28 10:15:14 +02:00
Merge pull request #19206 from hvitved/ruby/super-implicit-args-synth
Ruby: Synthesize implicit super arguments
This commit is contained in:
@@ -3153,6 +3153,54 @@ params/params.rb:
|
||||
# 95| getReceiver: [LocalVariableAccess] hash
|
||||
# 95| getArgument: [HashSplatExpr] ** ...
|
||||
# 95| getAnOperand/getOperand/getReceiver: [LocalVariableAccess] __synth__0
|
||||
# 98| getStmt: [ClassDeclaration] Sup
|
||||
# 99| getStmt: [Method] m
|
||||
# 99| getParameter: [SimpleParameter] x
|
||||
# 99| getDefiningAccess: [LocalVariableAccess] x
|
||||
# 99| getParameter: [SplatParameter] *rest
|
||||
# 99| getDefiningAccess: [LocalVariableAccess] rest
|
||||
# 99| getParameter: [KeywordParameter] k
|
||||
# 99| getDefiningAccess: [LocalVariableAccess] k
|
||||
# 99| getParameter: [HashSplatParameter] **kwargs
|
||||
# 99| getDefiningAccess: [LocalVariableAccess] kwargs
|
||||
# 100| getStmt: [MethodCall] call to print
|
||||
# 100| getReceiver: [SelfVariableAccess] self
|
||||
# 100| getArgument: [AddExpr] ... + ...
|
||||
# 100| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] x
|
||||
# 100| getAnOperand/getArgument/getRightOperand: [IntegerLiteral] 1
|
||||
# 101| getStmt: [MethodCall] call to print
|
||||
# 101| getReceiver: [SelfVariableAccess] self
|
||||
# 101| getArgument: [AddExpr] ... + ...
|
||||
# 101| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] k
|
||||
# 101| getAnOperand/getArgument/getRightOperand: [IntegerLiteral] 1
|
||||
# 105| getStmt: [ClassDeclaration] Sub
|
||||
# 105| getSuperclassExpr: [ConstantReadAccess] Sup
|
||||
# 106| getStmt: [Method] m
|
||||
# 106| getParameter: [SimpleParameter] y
|
||||
# 106| getDefiningAccess: [LocalVariableAccess] y
|
||||
# 106| getParameter: [SplatParameter] *rest
|
||||
# 106| getDefiningAccess: [LocalVariableAccess] rest
|
||||
# 106| getParameter: [KeywordParameter] k
|
||||
# 106| getDefiningAccess: [LocalVariableAccess] k
|
||||
# 106| getParameter: [HashSplatParameter] **kwargs
|
||||
# 106| getDefiningAccess: [LocalVariableAccess] kwargs
|
||||
# 107| getStmt: [SuperCall] super call to m
|
||||
# 107| getArgument: [HashSplatExpr] ** ...
|
||||
# 107| getAnOperand/getOperand/getReceiver: [LocalVariableAccess] kwargs
|
||||
# 107| getArgument: [Pair] Pair
|
||||
# 107| getKey: [SymbolLiteral] k
|
||||
# 107| getValue: [LocalVariableAccess] k
|
||||
# 107| getArgument: [SplatExpr] * ...
|
||||
# 107| getAnOperand/getOperand/getReceiver: [LocalVariableAccess] rest
|
||||
# 107| getArgument: [LocalVariableAccess] y
|
||||
# 111| getStmt: [MethodCall] call to m
|
||||
# 111| getReceiver: [MethodCall] call to new
|
||||
# 111| getReceiver: [ConstantReadAccess] Sub
|
||||
# 111| getArgument: [IntegerLiteral] 42
|
||||
# 111| getArgument: [Pair] Pair
|
||||
# 111| getKey: [SymbolLiteral] :k
|
||||
# 111| getComponent: [StringTextComponent] k
|
||||
# 111| getValue: [IntegerLiteral] 22
|
||||
erb/template.html.erb:
|
||||
# 19| [Toplevel] template.html.erb
|
||||
# 19| getStmt: [StringLiteral] "hello world"
|
||||
|
||||
@@ -6192,6 +6192,96 @@ params/params.rb:
|
||||
# 95| 0: [ReservedWord] **
|
||||
# 95| 2: [ReservedWord] )
|
||||
# 96| 4: [ReservedWord] end
|
||||
# 98| 25: [Class] Class
|
||||
# 98| 0: [ReservedWord] class
|
||||
# 98| 1: [Constant] Sup
|
||||
# 99| 2: [BodyStatement] BodyStatement
|
||||
# 99| 0: [Method] Method
|
||||
# 99| 0: [ReservedWord] def
|
||||
# 99| 1: [Identifier] m
|
||||
# 99| 2: [MethodParameters] MethodParameters
|
||||
# 99| 0: [ReservedWord] (
|
||||
# 99| 1: [Identifier] x
|
||||
# 99| 2: [ReservedWord] ,
|
||||
# 99| 3: [SplatParameter] SplatParameter
|
||||
# 99| 0: [ReservedWord] *
|
||||
# 99| 1: [Identifier] rest
|
||||
# 99| 4: [ReservedWord] ,
|
||||
# 99| 5: [KeywordParameter] KeywordParameter
|
||||
# 99| 0: [Identifier] k
|
||||
# 99| 1: [ReservedWord] :
|
||||
# 99| 6: [ReservedWord] ,
|
||||
# 99| 7: [HashSplatParameter] HashSplatParameter
|
||||
# 99| 0: [ReservedWord] **
|
||||
# 99| 1: [Identifier] kwargs
|
||||
# 99| 8: [ReservedWord] )
|
||||
# 100| 3: [BodyStatement] BodyStatement
|
||||
# 100| 0: [Call] Call
|
||||
# 100| 0: [Identifier] print
|
||||
# 100| 1: [ArgumentList] ArgumentList
|
||||
# 100| 0: [ReservedWord] (
|
||||
# 100| 1: [Binary] Binary
|
||||
# 100| 0: [Identifier] x
|
||||
# 100| 1: [ReservedWord] +
|
||||
# 100| 2: [Integer] 1
|
||||
# 100| 2: [ReservedWord] )
|
||||
# 101| 1: [Call] Call
|
||||
# 101| 0: [Identifier] print
|
||||
# 101| 1: [ArgumentList] ArgumentList
|
||||
# 101| 0: [ReservedWord] (
|
||||
# 101| 1: [Binary] Binary
|
||||
# 101| 0: [Identifier] k
|
||||
# 101| 1: [ReservedWord] +
|
||||
# 101| 2: [Integer] 1
|
||||
# 101| 2: [ReservedWord] )
|
||||
# 102| 4: [ReservedWord] end
|
||||
# 103| 3: [ReservedWord] end
|
||||
# 105| 26: [Class] Class
|
||||
# 105| 0: [ReservedWord] class
|
||||
# 105| 1: [Constant] Sub
|
||||
# 105| 2: [Superclass] Superclass
|
||||
# 105| 0: [ReservedWord] <
|
||||
# 105| 1: [Constant] Sup
|
||||
# 106| 3: [BodyStatement] BodyStatement
|
||||
# 106| 0: [Method] Method
|
||||
# 106| 0: [ReservedWord] def
|
||||
# 106| 1: [Identifier] m
|
||||
# 106| 2: [MethodParameters] MethodParameters
|
||||
# 106| 0: [ReservedWord] (
|
||||
# 106| 1: [Identifier] y
|
||||
# 106| 2: [ReservedWord] ,
|
||||
# 106| 3: [SplatParameter] SplatParameter
|
||||
# 106| 0: [ReservedWord] *
|
||||
# 106| 1: [Identifier] rest
|
||||
# 106| 4: [ReservedWord] ,
|
||||
# 106| 5: [KeywordParameter] KeywordParameter
|
||||
# 106| 0: [Identifier] k
|
||||
# 106| 1: [ReservedWord] :
|
||||
# 106| 6: [ReservedWord] ,
|
||||
# 106| 7: [HashSplatParameter] HashSplatParameter
|
||||
# 106| 0: [ReservedWord] **
|
||||
# 106| 1: [Identifier] kwargs
|
||||
# 106| 8: [ReservedWord] )
|
||||
# 107| 3: [BodyStatement] BodyStatement
|
||||
# 107| 0: [Super] super
|
||||
# 108| 4: [ReservedWord] end
|
||||
# 109| 4: [ReservedWord] end
|
||||
# 111| 27: [Call] Call
|
||||
# 111| 0: [Call] Call
|
||||
# 111| 0: [Constant] Sub
|
||||
# 111| 1: [ReservedWord] .
|
||||
# 111| 2: [Identifier] new
|
||||
# 111| 1: [ReservedWord] .
|
||||
# 111| 2: [Identifier] m
|
||||
# 111| 3: [ArgumentList] ArgumentList
|
||||
# 111| 0: [ReservedWord] (
|
||||
# 111| 1: [Integer] 42
|
||||
# 111| 2: [ReservedWord] ,
|
||||
# 111| 3: [Pair] Pair
|
||||
# 111| 0: [HashKeySymbol] k
|
||||
# 111| 1: [ReservedWord] :
|
||||
# 111| 2: [Integer] 22
|
||||
# 111| 4: [ReservedWord] )
|
||||
# 1| [Comment] # Tests for the different kinds and contexts of parameters.
|
||||
# 3| [Comment] # Method containing identifier parameters
|
||||
# 7| [Comment] # Block containing identifier parameters
|
||||
|
||||
@@ -941,6 +941,12 @@ exprValue
|
||||
| params/params.rb:65:41:65:42 | 99 | 99 | int |
|
||||
| params/params.rb:70:42:70:45 | 1000 | 1000 | int |
|
||||
| params/params.rb:70:52:70:53 | 20 | 20 | int |
|
||||
| params/params.rb:100:15:100:15 | 1 | 1 | int |
|
||||
| params/params.rb:101:15:101:15 | 1 | 1 | int |
|
||||
| params/params.rb:107:5:107:9 | k | :k | symbol |
|
||||
| params/params.rb:111:11:111:12 | 42 | 42 | int |
|
||||
| params/params.rb:111:15:111:15 | :k | :k | symbol |
|
||||
| params/params.rb:111:18:111:19 | 22 | 22 | int |
|
||||
exprCfgNodeValue
|
||||
| calls/calls.rb:8:1:8:3 | 123 | 123 | int |
|
||||
| calls/calls.rb:11:5:11:5 | 0 | 0 | int |
|
||||
@@ -1855,3 +1861,9 @@ exprCfgNodeValue
|
||||
| params/params.rb:65:41:65:42 | 99 | 99 | int |
|
||||
| params/params.rb:70:42:70:45 | 1000 | 1000 | int |
|
||||
| params/params.rb:70:52:70:53 | 20 | 20 | int |
|
||||
| params/params.rb:100:15:100:15 | 1 | 1 | int |
|
||||
| params/params.rb:101:15:101:15 | 1 | 1 | int |
|
||||
| params/params.rb:107:5:107:9 | k | :k | symbol |
|
||||
| params/params.rb:111:11:111:12 | 42 | 42 | int |
|
||||
| params/params.rb:111:15:111:15 | :k | :k | symbol |
|
||||
| params/params.rb:111:18:111:19 | 22 | 22 | int |
|
||||
|
||||
@@ -39,6 +39,14 @@ idParams
|
||||
| params.rb:86:14:86:14 | x | x |
|
||||
| params.rb:89:31:89:35 | array | array |
|
||||
| params.rb:94:36:94:39 | hash | hash |
|
||||
| params.rb:99:9:99:9 | x | x |
|
||||
| params.rb:99:12:99:16 | *rest | rest |
|
||||
| params.rb:99:19:99:19 | k | k |
|
||||
| params.rb:99:23:99:30 | **kwargs | kwargs |
|
||||
| params.rb:106:9:106:9 | y | y |
|
||||
| params.rb:106:12:106:16 | *rest | rest |
|
||||
| params.rb:106:19:106:19 | k | k |
|
||||
| params.rb:106:23:106:30 | **kwargs | kwargs |
|
||||
blockParams
|
||||
| params.rb:46:28:46:33 | &block | block |
|
||||
| params.rb:62:29:62:34 | &block | block |
|
||||
@@ -56,10 +64,14 @@ splatParams
|
||||
| params.rb:30:31:30:36 | *splat | splat |
|
||||
| params.rb:34:21:34:26 | *splat | splat |
|
||||
| params.rb:38:29:38:33 | *blah | blah |
|
||||
| params.rb:99:12:99:16 | *rest | rest |
|
||||
| params.rb:106:12:106:16 | *rest | rest |
|
||||
hashSplatParams
|
||||
| params.rb:30:39:30:52 | **double_splat | double_splat |
|
||||
| params.rb:34:29:34:42 | **double_splat | double_splat |
|
||||
| params.rb:38:36:38:43 | **wibble | wibble |
|
||||
| params.rb:99:23:99:30 | **kwargs | kwargs |
|
||||
| params.rb:106:23:106:30 | **kwargs | kwargs |
|
||||
keywordParams
|
||||
| params.rb:41:35:41:37 | foo | foo | (none) |
|
||||
| params.rb:41:41:41:43 | bar | bar | 7 |
|
||||
@@ -67,6 +79,8 @@ keywordParams
|
||||
| params.rb:49:33:49:34 | yy | yy | 100 |
|
||||
| params.rb:53:37:53:37 | y | y | (none) |
|
||||
| params.rb:53:41:53:41 | z | z | 3 |
|
||||
| params.rb:99:19:99:19 | k | k | (none) |
|
||||
| params.rb:106:19:106:19 | k | k | (none) |
|
||||
optionalParams
|
||||
| params.rb:58:39:58:42 | val2 | val2 | params.rb:58:46:58:46 | 0 |
|
||||
| params.rb:58:49:58:52 | val3 | val3 | params.rb:58:56:58:58 | 100 |
|
||||
@@ -97,6 +111,14 @@ paramsInMethods
|
||||
| params.rb:89:1:91:3 | anonymous_splat_parameter | 1 | params.rb:89:38:89:38 | * | SplatParameter |
|
||||
| params.rb:94:1:96:3 | anonymous_hash_splat_parameter | 0 | params.rb:94:36:94:39 | hash | SimpleParameter |
|
||||
| params.rb:94:1:96:3 | anonymous_hash_splat_parameter | 1 | params.rb:94:42:94:43 | ** | HashSplatParameter |
|
||||
| params.rb:99:3:102:5 | m | 0 | params.rb:99:9:99:9 | x | SimpleParameter |
|
||||
| params.rb:99:3:102:5 | m | 1 | params.rb:99:12:99:16 | *rest | SplatParameter |
|
||||
| params.rb:99:3:102:5 | m | 2 | params.rb:99:19:99:19 | k | KeywordParameter |
|
||||
| params.rb:99:3:102:5 | m | 3 | params.rb:99:23:99:30 | **kwargs | HashSplatParameter |
|
||||
| params.rb:106:3:108:5 | m | 0 | params.rb:106:9:106:9 | y | SimpleParameter |
|
||||
| params.rb:106:3:108:5 | m | 1 | params.rb:106:12:106:16 | *rest | SplatParameter |
|
||||
| params.rb:106:3:108:5 | m | 2 | params.rb:106:19:106:19 | k | KeywordParameter |
|
||||
| params.rb:106:3:108:5 | m | 3 | params.rb:106:23:106:30 | **kwargs | HashSplatParameter |
|
||||
paramsInBlocks
|
||||
| params.rb:9:11:11:3 | do ... end | 0 | params.rb:9:15:9:17 | key | SimpleParameter |
|
||||
| params.rb:9:11:11:3 | do ... end | 1 | params.rb:9:20:9:24 | value | SimpleParameter |
|
||||
@@ -175,3 +197,11 @@ params
|
||||
| params.rb:89:38:89:38 | * | 1 | SplatParameter |
|
||||
| params.rb:94:36:94:39 | hash | 0 | SimpleParameter |
|
||||
| params.rb:94:42:94:43 | ** | 1 | HashSplatParameter |
|
||||
| params.rb:99:9:99:9 | x | 0 | SimpleParameter |
|
||||
| params.rb:99:12:99:16 | *rest | 1 | SplatParameter |
|
||||
| params.rb:99:19:99:19 | k | 2 | KeywordParameter |
|
||||
| params.rb:99:23:99:30 | **kwargs | 3 | HashSplatParameter |
|
||||
| params.rb:106:9:106:9 | y | 0 | SimpleParameter |
|
||||
| params.rb:106:12:106:16 | *rest | 1 | SplatParameter |
|
||||
| params.rb:106:19:106:19 | k | 2 | KeywordParameter |
|
||||
| params.rb:106:23:106:30 | **kwargs | 3 | HashSplatParameter |
|
||||
|
||||
@@ -94,3 +94,18 @@ end
|
||||
def anonymous_hash_splat_parameter(hash, **)
|
||||
hash.merge(**)
|
||||
end
|
||||
|
||||
class Sup
|
||||
def m(x, *rest, k:, **kwargs)
|
||||
print(x + 1)
|
||||
print(k + 1)
|
||||
end
|
||||
end
|
||||
|
||||
class Sub < Sup
|
||||
def m(y, *rest, k:, **kwargs)
|
||||
super
|
||||
end
|
||||
end
|
||||
|
||||
Sub.new.m(42, k: 22)
|
||||
File diff suppressed because it is too large
Load Diff
@@ -174,6 +174,34 @@ edges
|
||||
| params_flow.rb:192:24:192:32 | call to taint | params_flow.rb:181:28:181:29 | p2 | provenance | |
|
||||
| params_flow.rb:192:24:192:32 | call to taint | params_flow.rb:192:20:192:21 | [post] p1 : [collection] [element 0] | provenance | |
|
||||
| params_flow.rb:193:6:193:7 | p1 : [collection] [element 0] | params_flow.rb:193:6:193:10 | ...[...] | provenance | |
|
||||
| params_flow.rb:210:11:210:11 | x | params_flow.rb:211:14:211:14 | x | provenance | |
|
||||
| params_flow.rb:210:14:210:18 | *rest : [collection] [element 0] | params_flow.rb:212:14:212:17 | rest : [collection] [element 0] | provenance | |
|
||||
| params_flow.rb:210:14:210:18 | *rest : [collection] [element 2] | params_flow.rb:214:14:214:17 | rest : [collection] [element 2] | provenance | |
|
||||
| params_flow.rb:210:21:210:22 | k1 | params_flow.rb:215:14:215:15 | k1 | provenance | |
|
||||
| params_flow.rb:210:26:210:33 | **kwargs : Hash [element :k2] | params_flow.rb:216:14:216:19 | kwargs : Hash [element :k2] | provenance | |
|
||||
| params_flow.rb:212:14:212:17 | rest : [collection] [element 0] | params_flow.rb:212:14:212:20 | ...[...] | provenance | |
|
||||
| params_flow.rb:214:14:214:17 | rest : [collection] [element 2] | params_flow.rb:214:14:214:20 | ...[...] | provenance | |
|
||||
| params_flow.rb:216:14:216:19 | kwargs : Hash [element :k2] | params_flow.rb:216:14:216:24 | ...[...] | provenance | |
|
||||
| params_flow.rb:217:15:217:23 | call to taint | params_flow.rb:227:81:227:81 | x | provenance | |
|
||||
| params_flow.rb:222:11:222:11 | x | params_flow.rb:223:9:223:13 | x | provenance | |
|
||||
| params_flow.rb:222:14:222:18 | *rest : [collection] [element 0] | params_flow.rb:223:9:223:13 | rest : [collection] [element 0] | provenance | |
|
||||
| params_flow.rb:222:14:222:18 | *rest : [collection] [element 2] | params_flow.rb:223:9:223:13 | rest : [collection] [element 2] | provenance | |
|
||||
| params_flow.rb:222:21:222:22 | k1 | params_flow.rb:223:9:223:13 | k1 | provenance | |
|
||||
| params_flow.rb:222:26:222:33 | **kwargs : Hash [element :k2] | params_flow.rb:223:9:223:13 | kwargs : Hash [element :k2] | provenance | |
|
||||
| params_flow.rb:223:9:223:13 | * ... : [collection] [element 0] | params_flow.rb:210:14:210:18 | *rest : [collection] [element 0] | provenance | |
|
||||
| params_flow.rb:223:9:223:13 | * ... : [collection] [element 2] | params_flow.rb:210:14:210:18 | *rest : [collection] [element 2] | provenance | |
|
||||
| params_flow.rb:223:9:223:13 | ** ... : Hash [element :k2] | params_flow.rb:210:26:210:33 | **kwargs : Hash [element :k2] | provenance | |
|
||||
| params_flow.rb:223:9:223:13 | k1 | params_flow.rb:210:21:210:22 | k1 | provenance | |
|
||||
| params_flow.rb:223:9:223:13 | kwargs : Hash [element :k2] | params_flow.rb:223:9:223:13 | ** ... : Hash [element :k2] | provenance | |
|
||||
| params_flow.rb:223:9:223:13 | rest : [collection] [element 0] | params_flow.rb:223:9:223:13 | * ... : [collection] [element 0] | provenance | |
|
||||
| params_flow.rb:223:9:223:13 | rest : [collection] [element 2] | params_flow.rb:223:9:223:13 | * ... : [collection] [element 2] | provenance | |
|
||||
| params_flow.rb:223:9:223:13 | x | params_flow.rb:210:11:210:11 | x | provenance | |
|
||||
| params_flow.rb:227:11:227:19 | call to taint | params_flow.rb:222:11:222:11 | x | provenance | |
|
||||
| params_flow.rb:227:22:227:30 | call to taint | params_flow.rb:222:14:222:18 | *rest : [collection] [element 0] | provenance | |
|
||||
| params_flow.rb:227:36:227:44 | call to taint | params_flow.rb:222:14:222:18 | *rest : [collection] [element 2] | provenance | |
|
||||
| params_flow.rb:227:51:227:59 | call to taint | params_flow.rb:222:21:222:22 | k1 | provenance | |
|
||||
| params_flow.rb:227:66:227:74 | call to taint | params_flow.rb:222:26:222:33 | **kwargs : Hash [element :k2] | provenance | |
|
||||
| params_flow.rb:227:81:227:81 | x | params_flow.rb:228:10:228:10 | x | provenance | |
|
||||
nodes
|
||||
| params_flow.rb:9:16:9:17 | p1 | semmle.label | p1 |
|
||||
| params_flow.rb:9:20:9:21 | p2 | semmle.label | p2 |
|
||||
@@ -373,6 +401,40 @@ nodes
|
||||
| params_flow.rb:192:24:192:32 | call to taint | semmle.label | call to taint |
|
||||
| params_flow.rb:193:6:193:7 | p1 : [collection] [element 0] | semmle.label | p1 : [collection] [element 0] |
|
||||
| params_flow.rb:193:6:193:10 | ...[...] | semmle.label | ...[...] |
|
||||
| params_flow.rb:210:11:210:11 | x | semmle.label | x |
|
||||
| params_flow.rb:210:14:210:18 | *rest : [collection] [element 0] | semmle.label | *rest : [collection] [element 0] |
|
||||
| params_flow.rb:210:14:210:18 | *rest : [collection] [element 2] | semmle.label | *rest : [collection] [element 2] |
|
||||
| params_flow.rb:210:21:210:22 | k1 | semmle.label | k1 |
|
||||
| params_flow.rb:210:26:210:33 | **kwargs : Hash [element :k2] | semmle.label | **kwargs : Hash [element :k2] |
|
||||
| params_flow.rb:211:14:211:14 | x | semmle.label | x |
|
||||
| params_flow.rb:212:14:212:17 | rest : [collection] [element 0] | semmle.label | rest : [collection] [element 0] |
|
||||
| params_flow.rb:212:14:212:20 | ...[...] | semmle.label | ...[...] |
|
||||
| params_flow.rb:214:14:214:17 | rest : [collection] [element 2] | semmle.label | rest : [collection] [element 2] |
|
||||
| params_flow.rb:214:14:214:20 | ...[...] | semmle.label | ...[...] |
|
||||
| params_flow.rb:215:14:215:15 | k1 | semmle.label | k1 |
|
||||
| params_flow.rb:216:14:216:19 | kwargs : Hash [element :k2] | semmle.label | kwargs : Hash [element :k2] |
|
||||
| params_flow.rb:216:14:216:24 | ...[...] | semmle.label | ...[...] |
|
||||
| params_flow.rb:217:15:217:23 | call to taint | semmle.label | call to taint |
|
||||
| params_flow.rb:222:11:222:11 | x | semmle.label | x |
|
||||
| params_flow.rb:222:14:222:18 | *rest : [collection] [element 0] | semmle.label | *rest : [collection] [element 0] |
|
||||
| params_flow.rb:222:14:222:18 | *rest : [collection] [element 2] | semmle.label | *rest : [collection] [element 2] |
|
||||
| params_flow.rb:222:21:222:22 | k1 | semmle.label | k1 |
|
||||
| params_flow.rb:222:26:222:33 | **kwargs : Hash [element :k2] | semmle.label | **kwargs : Hash [element :k2] |
|
||||
| params_flow.rb:223:9:223:13 | * ... : [collection] [element 0] | semmle.label | * ... : [collection] [element 0] |
|
||||
| params_flow.rb:223:9:223:13 | * ... : [collection] [element 2] | semmle.label | * ... : [collection] [element 2] |
|
||||
| params_flow.rb:223:9:223:13 | ** ... : Hash [element :k2] | semmle.label | ** ... : Hash [element :k2] |
|
||||
| params_flow.rb:223:9:223:13 | k1 | semmle.label | k1 |
|
||||
| params_flow.rb:223:9:223:13 | kwargs : Hash [element :k2] | semmle.label | kwargs : Hash [element :k2] |
|
||||
| params_flow.rb:223:9:223:13 | rest : [collection] [element 0] | semmle.label | rest : [collection] [element 0] |
|
||||
| params_flow.rb:223:9:223:13 | rest : [collection] [element 2] | semmle.label | rest : [collection] [element 2] |
|
||||
| params_flow.rb:223:9:223:13 | x | semmle.label | x |
|
||||
| params_flow.rb:227:11:227:19 | call to taint | semmle.label | call to taint |
|
||||
| params_flow.rb:227:22:227:30 | call to taint | semmle.label | call to taint |
|
||||
| params_flow.rb:227:36:227:44 | call to taint | semmle.label | call to taint |
|
||||
| params_flow.rb:227:51:227:59 | call to taint | semmle.label | call to taint |
|
||||
| params_flow.rb:227:66:227:74 | call to taint | semmle.label | call to taint |
|
||||
| params_flow.rb:227:81:227:81 | x | semmle.label | x |
|
||||
| params_flow.rb:228:10:228:10 | x | semmle.label | x |
|
||||
subpaths
|
||||
| params_flow.rb:164:31:164:39 | call to taint | params_flow.rb:153:28:153:29 | p2 | params_flow.rb:153:23:153:24 | p1 [Return] : [collection] [element 0] | params_flow.rb:164:23:164:24 | [post] p1 : [collection] [element 0] |
|
||||
| params_flow.rb:192:24:192:32 | call to taint | params_flow.rb:181:28:181:29 | p2 | params_flow.rb:181:24:181:25 | p1 [Return] : [collection] [element 0] | params_flow.rb:192:20:192:21 | [post] p1 : [collection] [element 0] |
|
||||
@@ -430,3 +492,9 @@ testFailures
|
||||
| params_flow.rb:134:10:134:16 | ...[...] | params_flow.rb:137:23:137:31 | call to taint | params_flow.rb:134:10:134:16 | ...[...] | $@ | params_flow.rb:137:23:137:31 | call to taint | call to taint |
|
||||
| params_flow.rb:165:6:165:10 | ...[...] | params_flow.rb:164:31:164:39 | call to taint | params_flow.rb:165:6:165:10 | ...[...] | $@ | params_flow.rb:164:31:164:39 | call to taint | call to taint |
|
||||
| params_flow.rb:193:6:193:10 | ...[...] | params_flow.rb:192:24:192:32 | call to taint | params_flow.rb:193:6:193:10 | ...[...] | $@ | params_flow.rb:192:24:192:32 | call to taint | call to taint |
|
||||
| params_flow.rb:211:14:211:14 | x | params_flow.rb:227:11:227:19 | call to taint | params_flow.rb:211:14:211:14 | x | $@ | params_flow.rb:227:11:227:19 | call to taint | call to taint |
|
||||
| params_flow.rb:212:14:212:20 | ...[...] | params_flow.rb:227:22:227:30 | call to taint | params_flow.rb:212:14:212:20 | ...[...] | $@ | params_flow.rb:227:22:227:30 | call to taint | call to taint |
|
||||
| params_flow.rb:214:14:214:20 | ...[...] | params_flow.rb:227:36:227:44 | call to taint | params_flow.rb:214:14:214:20 | ...[...] | $@ | params_flow.rb:227:36:227:44 | call to taint | call to taint |
|
||||
| params_flow.rb:215:14:215:15 | k1 | params_flow.rb:227:51:227:59 | call to taint | params_flow.rb:215:14:215:15 | k1 | $@ | params_flow.rb:227:51:227:59 | call to taint | call to taint |
|
||||
| params_flow.rb:216:14:216:24 | ...[...] | params_flow.rb:227:66:227:74 | call to taint | params_flow.rb:216:14:216:24 | ...[...] | $@ | params_flow.rb:227:66:227:74 | call to taint | call to taint |
|
||||
| params_flow.rb:228:10:228:10 | x | params_flow.rb:217:15:217:23 | call to taint | params_flow.rb:228:10:228:10 | x | $@ | params_flow.rb:217:15:217:23 | call to taint | call to taint |
|
||||
|
||||
@@ -205,3 +205,25 @@ def foo(x, y)
|
||||
end
|
||||
|
||||
foo(*int_hash)
|
||||
|
||||
class Sup
|
||||
def m(x, *rest, k1:, **kwargs)
|
||||
sink(x) # $ hasValueFlow=81
|
||||
sink(rest[0]) # $ hasValueFlow=82
|
||||
sink(rest[1])
|
||||
sink(rest[2]) # $ hasValueFlow=83
|
||||
sink(k1) # $ hasValueFlow=84
|
||||
sink(kwargs[:k2]) # $ hasValueFlow=85
|
||||
yield taint(86)
|
||||
end
|
||||
end
|
||||
|
||||
class Sub < Sup
|
||||
def m(x, *rest, k1:, **kwargs)
|
||||
super
|
||||
end
|
||||
end
|
||||
|
||||
Sub.new.m(taint(81), taint(82), 0, taint(83), k1: taint(84), k2: taint(85)) do |x|
|
||||
sink(x) # $ hasValueFlow=86
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user