aggregate the tests in library-tests/TypeScript/ImportEquals into a single .ql file

This commit is contained in:
Erik Krogh Kristensen
2020-10-14 14:30:25 +02:00
parent 778fbe6f61
commit a47b8c30d1
12 changed files with 87 additions and 77 deletions

View File

@@ -1,10 +0,0 @@
| ./esDefaultExport | tst.ts:1:26:1:53 | require ... xport') |
| ./esNamedExports | tst.ts:2:18:2:44 | require ... ports') |
| ./nodeFullExport | tst.ts:3:25:3:51 | require ... xport') |
| ./nodeNamedExport | tst.ts:4:20:4:47 | require ... xport') |
| ./taintSource | tst.ts:16:22:16:45 | require ... ource') |
| external | tst.ts:5:19:5:37 | require('external') |
| externalTaintSink | tst.ts:17:28:17:55 | require ... tSink') |
| externalTaintSource | taintSource.ts:1:30:1:59 | require ... ource") |
| fs | nodeFullExport.ts:1:10:1:22 | require('fs') |
| fs | nodeNamedExport.ts:1:10:1:22 | require('fs') |

View File

@@ -1,4 +0,0 @@
import javascript
from string name
select name, DataFlow::moduleImport(name)

View File

@@ -1,5 +0,0 @@
| tst.ts:1:26:1:53 | require ... xport') | ./esDefaultExport | esDefaultExport.ts:1:1:2:0 | <toplevel> |
| tst.ts:2:18:2:44 | require ... ports') | ./esNamedExports | esNamedExports.ts:1:1:6:0 | <toplevel> |
| tst.ts:3:25:3:51 | require ... xport') | ./nodeFullExport | nodeFullExport.ts:1:1:4:0 | <toplevel> |
| tst.ts:4:20:4:47 | require ... xport') | ./nodeNamedExport | nodeNamedExport.ts:1:1:4:0 | <toplevel> |
| tst.ts:16:22:16:45 | require ... ource') | ./taintSource | taintSource.ts:1:1:4:0 | <toplevel> |

View File

@@ -1,4 +0,0 @@
import javascript
from Import imprt
select imprt, imprt.getImportedPath().getValue(), imprt.getImportedModule()

View File

@@ -1,6 +0,0 @@
| esDefaultExport.ts | es2015 |
| esNamedExports.ts | es2015 |
| nodeFullExport.ts | node |
| nodeNamedExport.ts | node |
| taintSource.ts | es2015 |
| tst.ts | es2015 |

View File

@@ -1,19 +0,0 @@
import javascript
string getModuleType(TopLevel top) {
not top instanceof Module and
result = "non-module"
or
top instanceof NodeModule and
result = "node"
or
top instanceof ES2015Module and
result = "es2015"
or
top instanceof AmdModule and
result = "amd"
}
from TopLevel top
where not top.isExterns()
select top.getFile().getBaseName(), getModuleType(top)

View File

@@ -1,5 +0,0 @@
| tst.ts | ESDefaultExport | esDefaultExport.ts | ESDefaultExport |
| tst.ts | ESNamedExport1 | esNamedExports.ts | ESNamedExport1 |
| tst.ts | ESNamedExport2 | esNamedExports.ts | ESNamedExport2 |
| tst.ts | NodeFullExport | nodeFullExport.ts | NodeFullExport |
| tst.ts | NodeNamedExport | nodeNamedExport.ts | NodeNamedExport |

View File

@@ -1,6 +0,0 @@
import javascript
from DataFlow::NewNode new, ClassDefinition klass
where klass.getConstructor().getInit() = new.getACallee()
select new.getFile().getBaseName(), new.getCalleeName(), klass.getFile().getBaseName(),
klass.getName()

View File

@@ -1 +0,0 @@
| taintSource.ts:3:27:3:47 | externa ... ource() | tst.ts:18:19:18:42 | taintSo ... edValue |

View File

@@ -1,17 +0,0 @@
import javascript
class TaintConfig extends TaintTracking::Configuration {
TaintConfig() { this = "test taint config" }
override predicate isSource(DataFlow::Node node) {
node = DataFlow::moduleImport("externalTaintSource").getACall()
}
override predicate isSink(DataFlow::Node node) {
node = DataFlow::moduleImport("externalTaintSink").getACall().getArgument(0)
}
}
from TaintConfig cfg, DataFlow::Node source, DataFlow::Node sink
where cfg.hasFlow(source, sink)
select source, sink

View File

@@ -0,0 +1,32 @@
dataFlowModuleImports
| ./esDefaultExport | tst.ts:1:26:1:53 | require ... xport') |
| ./esNamedExports | tst.ts:2:18:2:44 | require ... ports') |
| ./nodeFullExport | tst.ts:3:25:3:51 | require ... xport') |
| ./nodeNamedExport | tst.ts:4:20:4:47 | require ... xport') |
| ./taintSource | tst.ts:16:22:16:45 | require ... ource') |
| external | tst.ts:5:19:5:37 | require('external') |
| externalTaintSink | tst.ts:17:28:17:55 | require ... tSink') |
| externalTaintSource | taintSource.ts:1:30:1:59 | require ... ource") |
| fs | nodeFullExport.ts:1:10:1:22 | require('fs') |
| fs | nodeNamedExport.ts:1:10:1:22 | require('fs') |
imports
| tst.ts:1:26:1:53 | require ... xport') | ./esDefaultExport | esDefaultExport.ts:1:1:2:0 | <toplevel> |
| tst.ts:2:18:2:44 | require ... ports') | ./esNamedExports | esNamedExports.ts:1:1:6:0 | <toplevel> |
| tst.ts:3:25:3:51 | require ... xport') | ./nodeFullExport | nodeFullExport.ts:1:1:4:0 | <toplevel> |
| tst.ts:4:20:4:47 | require ... xport') | ./nodeNamedExport | nodeNamedExport.ts:1:1:4:0 | <toplevel> |
| tst.ts:16:22:16:45 | require ... ource') | ./taintSource | taintSource.ts:1:1:4:0 | <toplevel> |
moduleTypes
| esDefaultExport.ts:1:1:2:0 | <toplevel> | esDefaultExport.ts | es2015 |
| esNamedExports.ts:1:1:6:0 | <toplevel> | esNamedExports.ts | es2015 |
| nodeFullExport.ts:1:1:4:0 | <toplevel> | nodeFullExport.ts | node |
| nodeNamedExport.ts:1:1:4:0 | <toplevel> | nodeNamedExport.ts | node |
| taintSource.ts:1:1:4:0 | <toplevel> | taintSource.ts | es2015 |
| tst.ts:1:1:19:0 | <toplevel> | tst.ts | es2015 |
resolution
| tst.ts:7:1:7:21 | new ESD ... xport() | esDefaultExport.ts:1:16:1:39 | class E ... port {} | tst.ts | ESDefaultExport | esDefaultExport.ts |
| tst.ts:8:1:8:28 | new esN ... port1() | esNamedExports.ts:1:8:1:30 | class E ... ort1 {} | tst.ts | ESNamedExport1 | esNamedExports.ts |
| tst.ts:9:1:9:28 | new esN ... port2() | esNamedExports.ts:3:1:3:23 | class E ... ort2 {} | tst.ts | ESNamedExport2 | esNamedExports.ts |
| tst.ts:10:1:10:20 | new NodeFullExport() | nodeFullExport.ts:3:18:3:40 | class N ... port {} | tst.ts | NodeFullExport | nodeFullExport.ts |
| tst.ts:11:1:11:31 | new nod ... xport() | nodeNamedExport.ts:3:27:3:50 | class N ... port {} | tst.ts | NodeNamedExport | nodeNamedExport.ts |
taint
| test taint config | taintSource.ts:3:27:3:47 | externa ... ource() | tst.ts:18:19:18:42 | taintSo ... edValue |

View File

@@ -0,0 +1,55 @@
import javascript
query predicate dataFlowModuleImports(string name, DataFlow::SourceNode imp) {
DataFlow::moduleImport(name) = imp
}
query predicate imports(Import imprt, string path, Module mod) {
path = imprt.getImportedPath().getValue() and
mod = imprt.getImportedModule()
}
string getModuleType(TopLevel top) {
not top instanceof Module and
result = "non-module"
or
top instanceof NodeModule and
result = "node"
or
top instanceof ES2015Module and
result = "es2015"
or
top instanceof AmdModule and
result = "amd"
}
query predicate moduleTypes(TopLevel top, string file, string modType) {
not top.isExterns() and
file = top.getFile().getBaseName() and
modType = getModuleType(top)
}
query predicate resolution(
DataFlow::NewNode new, ClassDefinition klass, string newFile, string callee, string klassFile
) {
klass.getConstructor().getInit() = new.getACallee() and
newFile = new.getFile().getBaseName() and
callee = new.getCalleeName() and
klassFile = klass.getFile().getBaseName()
}
class TaintConfig extends TaintTracking::Configuration {
TaintConfig() { this = "test taint config" }
override predicate isSource(DataFlow::Node node) {
node = DataFlow::moduleImport("externalTaintSource").getACall()
}
override predicate isSink(DataFlow::Node node) {
node = DataFlow::moduleImport("externalTaintSink").getACall().getArgument(0)
}
}
query predicate taint(TaintConfig cfg, DataFlow::Node source, DataFlow::Node sink) {
cfg.hasFlow(source, sink)
}