Skip to content

Commit 74db8b1

Browse files
author
Max Schaefer
committed
JavaScript: Use type tracking instead of tracked nodes in Express.
1 parent 276f216 commit 74db8b1

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

javascript/ql/src/semmle/javascript/frameworks/Electron.qll

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ module Electron {
1616
/**
1717
* An instantiation of `BrowserWindow` or `BrowserView`.
1818
*/
19-
abstract private class NewBrowserObject extends BrowserObject, DataFlow::SourceNode {
19+
abstract private class NewBrowserObject extends BrowserObject {
2020
DataFlow::NewNode self;
2121

2222
NewBrowserObject() { this = self }
@@ -56,11 +56,20 @@ module Electron {
5656
}
5757
}
5858

59+
private DataFlow::SourceNode browserObject(DataFlow::TypeTracker t) {
60+
t.start() and
61+
result instanceof NewBrowserObject
62+
or
63+
exists(DataFlow::TypeTracker prev |
64+
result = browserObject(prev).track(prev, t)
65+
)
66+
}
67+
5968
/**
6069
* A data flow node whose value may originate from a browser object instantiation.
6170
*/
6271
private class BrowserObjectByFlow extends BrowserObject {
63-
BrowserObjectByFlow() { any(NewBrowserObject nbo).flowsTo(this) }
72+
BrowserObjectByFlow() { browserObject(_).flowsTo(this) }
6473
}
6574

6675
/**

javascript/ql/test/library-tests/frameworks/Electron/BrowserObject.expected

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
| electron.js:3:10:3:48 | new Bro ... s: {}}) |
55
| electron.js:4:5:4:46 | bv |
66
| electron.js:4:10:4:46 | new Bro ... s: {}}) |
7+
| electron.js:35:14:35:14 | x |
8+
| electron.js:36:12:36:12 | x |
79
| electron.js:39:5:39:6 | bw |
810
| electron.js:40:5:40:6 | bv |
911
| electron.ts:3:12:3:13 | bw |

0 commit comments

Comments
 (0)