Skip to content

Commit 3d19a9d

Browse files
committed
JS: Update type usage in ClassValidator model
1 parent 950b095 commit 3d19a9d

2 files changed

Lines changed: 8 additions & 2 deletions

File tree

javascript/ql/lib/javascript.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ import semmle.javascript.NodeJS
4747
import semmle.javascript.NPM
4848
import semmle.javascript.Paths
4949
import semmle.javascript.Promises
50-
import semmle.javascript.CanonicalNames
50+
deprecated import semmle.javascript.CanonicalNames
5151
import semmle.javascript.RangeAnalysis
5252
import semmle.javascript.Regexp
5353
import semmle.javascript.Routing

javascript/ql/lib/semmle/javascript/frameworks/ClassValidator.qll

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
*/
44

55
import javascript
6+
private import semmle.javascript.internal.NameResolution
7+
private import semmle.javascript.internal.TypeResolution
8+
private import semmle.javascript.internal.UnderlyingTypes
69

710
/**
811
* Provides predicates for reasoning about sanitization via the `class-validator` library.
@@ -50,7 +53,10 @@ module ClassValidator {
5053

5154
pragma[noinline]
5255
private ClassDefinition getClassReferencedByPropRead(DataFlow::PropRead read) {
53-
read.getBase().asExpr().getType().unfold().(ClassType).getClass() = result
56+
exists(NameResolution::Node type |
57+
TypeResolution::valueHasType(read.getBase().asExpr(), type) and
58+
UnderlyingTypes::nodeHasUnderlyingClassType(type, result.flow())
59+
)
5460
}
5561

5662
/**

0 commit comments

Comments
 (0)