mirror of
https://github.com/github/codeql.git
synced 2026-04-29 02:35:15 +02:00
Fix missing flow through super calls
This commit is contained in:
@@ -470,6 +470,9 @@ private predicate isArgumentNodeImpl(Node n, DataFlowCall call, ArgumentPosition
|
||||
or
|
||||
pos.isThis() and n = TNewCallThisArgument(call.asOrdinaryCall().asExpr())
|
||||
or
|
||||
pos.isThis() and
|
||||
n = TImplicitThisUse(call.asOrdinaryCall().asExpr().(SuperCall).getCallee(), false)
|
||||
or
|
||||
// receiver of accessor call
|
||||
pos.isThis() and n = call.asAccessorCall().getBase()
|
||||
or
|
||||
|
||||
@@ -94,3 +94,20 @@ function t6() {
|
||||
sink(c.y); // $ hasValueFlow=t6.2
|
||||
c.methodLike();
|
||||
}
|
||||
|
||||
function t7() {
|
||||
class Base {
|
||||
constructor(x) {
|
||||
this.field = x;
|
||||
sink(this.field); // $ hasTaintFlow=t7.1
|
||||
}
|
||||
}
|
||||
class Sub extends Base {
|
||||
constructor(x) {
|
||||
super(x + '!');
|
||||
sink(this.field); // $ hasTaintFlow=t7.1
|
||||
}
|
||||
}
|
||||
const c = new Sub(source('t7.1'));
|
||||
sink(c.field); // $ hasTaintFlow=t7.1
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user