JS: Add recursion guard test

This commit is contained in:
Asger Feldthaus
2021-03-29 14:28:52 +01:00
parent c103939c2d
commit 3e26236648
3 changed files with 28 additions and 1 deletions

View File

@@ -34,7 +34,11 @@ private import semmle.javascript.internal.CachedStages
* ```
*/
class SourceNode extends DataFlow::Node {
SourceNode() { this instanceof SourceNode::Range }
SourceNode() {
this instanceof SourceNode::Range
or
none() and this instanceof SourceNode::Internal::RecursionGuard
}
/**
* Holds if this node flows into `sink` in zero or more local (that is,
@@ -329,6 +333,12 @@ module SourceNode {
DataFlow::functionReturnNode(this, _)
}
}
/** INTERNAL. DO NOT USE. */
module Internal {
/** An empty class that some tests are using to enforce that SourceNode is non-recursive. */
abstract class RecursionGuard extends DataFlow::Node {}
}
}
deprecated class DefaultSourceNode extends SourceNode {