Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c7fe96d

Browse files
author
Esben Sparre Andreasen
committed
JS: implement getADataNode for Electron::ClientRequest
1 parent e7836d7 commit c7fe96d

3 files changed

Lines changed: 13 additions & 22 deletions

File tree

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

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -49,32 +49,14 @@ module Electron {
4949
}
5050

5151
}
52-
53-
/**
54-
* A Node.js-style HTTP or HTTPS request made using `electron.net`, for example `net.request(url)`.
55-
*/
56-
private class NetRequest extends CustomElectronClientRequest {
57-
NetRequest() {
58-
this = DataFlow::moduleMember("electron", "net").getAMemberCall("request")
59-
}
60-
61-
override DataFlow::Node getUrl() {
62-
result = getArgument(0) or
63-
result = getOptionArgument(0, "url")
64-
}
65-
66-
override DataFlow::Node getADataNode() {
67-
none()
68-
}
69-
70-
}
7152

7253
/**
73-
* A Node.js-style HTTP or HTTPS request made using `electron.client`, for example `new client(url)`.
54+
* A Node.js-style HTTP or HTTPS request made using `electron.ClientRequest`.
7455
*/
7556
private class NewClientRequest extends CustomElectronClientRequest {
7657
NewClientRequest() {
77-
this = DataFlow::moduleMember("electron", "ClientRequest").getAnInstantiation()
58+
this = DataFlow::moduleMember("electron", "ClientRequest").getAnInstantiation() or
59+
this = DataFlow::moduleMember("electron", "net").getAMemberCall("request") // alias
7860
}
7961

8062
override DataFlow::Node getUrl() {
@@ -83,7 +65,10 @@ module Electron {
8365
}
8466

8567
override DataFlow::Node getADataNode() {
86-
none()
68+
exists (string name |
69+
name = "write" or name = "end" |
70+
result =this.(DataFlow::SourceNode).getAMethodCall(name).getArgument(0)
71+
)
8772
}
8873

8974
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
| electron.js:8:16:8:78 | new Cli ... POST'}) | electron.js:31:16:31:22 | 'stuff' |
2+
| electron.js:8:16:8:78 | new Cli ... POST'}) | electron.js:32:14:32:25 | 'more stuff' |
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import javascript
2+
3+
from Electron::ElectronClientRequest cr
4+
select cr, cr.getADataNode()

0 commit comments

Comments
 (0)