Skip to content

Commit 733e04c

Browse files
committed
Move rest-pattern inside property-pattern step to a taint-step
1 parent b8a9ac3 commit 733e04c

2 files changed

Lines changed: 7 additions & 6 deletions

File tree

javascript/ql/src/semmle/javascript/dataflow/DataFlow.qll

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ module DataFlow {
318318
/**
319319
* A node in the data flow graph which corresponds to a `@property`.
320320
*/
321-
private class PropNode extends Node, TPropNode {
321+
class PropNode extends Node, TPropNode {
322322
@property prop;
323323

324324
PropNode() { this = TPropNode(prop) }
@@ -1347,11 +1347,6 @@ module DataFlow {
13471347
succ = lvalueNode(pattern.getValuePattern())
13481348
)
13491349
or
1350-
exists(PropertyPattern pattern |
1351-
pred = TPropNode(pattern) and
1352-
succ = lvalueNode(pattern.getValuePattern().(ObjectPattern).getRest())
1353-
)
1354-
or
13551350
exists(Expr element |
13561351
pred = TElementPatternNode(_, element) and
13571352
succ = lvalueNode(element)

javascript/ql/src/semmle/javascript/dataflow/TaintTracking.qll

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,12 @@ module TaintTracking {
267267
pred = DataFlow::valueNode(fos.getIterationDomain()) and
268268
succ = DataFlow::lvalueNode(fos.getLValue())
269269
)
270+
or
271+
// rest-pattern inside a propety pattern. E.g. from `foo:..` to `args` in `const {foo: {...args}} = something()`.
272+
exists(PropertyPattern pattern |
273+
pred.(DataFlow::PropNode).getAstNode() = pattern and
274+
succ = DataFlow::lvalueNode(pattern.getValuePattern().(ObjectPattern).getRest())
275+
)
270276
}
271277

272278
/**

0 commit comments

Comments
 (0)