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

Skip to content

Commit 2935aac

Browse files
committed
JS: Port FileAccessToHttp
1 parent 8e95a90 commit 2935aac

3 files changed

Lines changed: 99 additions & 110 deletions

File tree

javascript/ql/lib/semmle/javascript/security/dataflow/FileAccessToHttpQuery.qll

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,30 @@ import FileAccessToHttpCustomizations::FileAccessToHttp
1313
/**
1414
* A taint tracking configuration for file data in outbound network requests.
1515
*/
16-
class Configuration extends TaintTracking::Configuration {
16+
module FileAccessToHttpConfig implements DataFlow::ConfigSig {
17+
predicate isSource(DataFlow::Node source) { source instanceof Source }
18+
19+
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
20+
21+
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
22+
23+
predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet contents) {
24+
isSink(node) and
25+
// or
26+
// node = any(DataFlow::MethodCallNode call | call.getMethodName() = "stringify").getAnArgument()
27+
contents = DataFlow::ContentSet::anyProperty()
28+
}
29+
}
30+
31+
/**
32+
* Taint tracking for file data in outbound network requests.
33+
*/
34+
module FileAccessToHttpFlow = TaintTracking::Global<FileAccessToHttpConfig>;
35+
36+
/**
37+
* DEPRECATED. Use the `FileAccessToHttpFlow` module instead.
38+
*/
39+
deprecated class Configuration extends TaintTracking::Configuration {
1740
Configuration() { this = "FileAccessToHttp" }
1841

1942
override predicate isSource(DataFlow::Node source) { source instanceof Source }

javascript/ql/src/Security/CWE-200/FileAccessToHttp.ql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212

1313
import javascript
1414
import semmle.javascript.security.dataflow.FileAccessToHttpQuery
15-
import DataFlow::PathGraph
15+
import FileAccessToHttpFlow::PathGraph
1616

17-
from Configuration cfg, DataFlow::PathNode source, DataFlow::PathNode sink
18-
where cfg.hasFlowPath(source, sink)
17+
from FileAccessToHttpFlow::PathNode source, FileAccessToHttpFlow::PathNode sink
18+
where FileAccessToHttpFlow::flowPath(source, sink)
1919
select sink.getNode(), source, sink, "Outbound network request depends on $@.", source.getNode(),
2020
"file data"

javascript/ql/test/query-tests/Security/CWE-200/FileAccessToHttp.expected

Lines changed: 72 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -1,123 +1,35 @@
1-
nodes
2-
| FileAccessToHttp.js:4:5:4:47 | content |
3-
| FileAccessToHttp.js:4:15:4:47 | fs.read ... "utf8") |
4-
| FileAccessToHttp.js:4:15:4:47 | fs.read ... "utf8") |
5-
| FileAccessToHttp.js:5:11:10:1 | {\\n hos ... ent }\\n} |
6-
| FileAccessToHttp.js:5:11:10:1 | {\\n hos ... ent }\\n} |
7-
| FileAccessToHttp.js:9:12:9:31 | { Referer: content } |
8-
| FileAccessToHttp.js:9:23:9:29 | content |
9-
| bufferRead.js:12:13:12:43 | buffer |
10-
| bufferRead.js:12:22:12:43 | new Buf ... s.size) |
11-
| bufferRead.js:12:22:12:43 | new Buf ... s.size) |
12-
| bufferRead.js:15:15:15:62 | postData |
13-
| bufferRead.js:15:26:15:31 | buffer |
14-
| bufferRead.js:15:26:15:62 | buffer. ... esRead) |
15-
| bufferRead.js:33:21:33:28 | postData |
16-
| bufferRead.js:33:21:33:28 | postData |
17-
| googlecompiler.js:7:19:7:28 | codestring |
18-
| googlecompiler.js:9:7:15:4 | post_data |
19-
| googlecompiler.js:9:19:15:4 | queryst ... dy\\n }) |
20-
| googlecompiler.js:9:41:15:3 | {\\n ... ody\\n } |
21-
| googlecompiler.js:14:21:14:30 | codestring |
22-
| googlecompiler.js:38:18:38:26 | post_data |
23-
| googlecompiler.js:38:18:38:26 | post_data |
24-
| googlecompiler.js:44:54:44:57 | data |
25-
| googlecompiler.js:44:54:44:57 | data |
26-
| googlecompiler.js:56:14:56:17 | data |
27-
| readFileSync.js:5:5:5:39 | data |
28-
| readFileSync.js:5:12:5:39 | fs.read ... t.txt") |
29-
| readFileSync.js:5:12:5:39 | fs.read ... t.txt") |
30-
| readFileSync.js:7:7:7:25 | s |
31-
| readFileSync.js:7:11:7:14 | data |
32-
| readFileSync.js:7:11:7:25 | data.toString() |
33-
| readFileSync.js:26:18:26:18 | s |
34-
| readFileSync.js:26:18:26:18 | s |
35-
| readStreamRead.js:13:13:13:35 | chunk |
36-
| readStreamRead.js:13:21:13:35 | readable.read() |
37-
| readStreamRead.js:13:21:13:35 | readable.read() |
38-
| readStreamRead.js:30:19:30:23 | chunk |
39-
| readStreamRead.js:30:19:30:23 | chunk |
40-
| request.js:6:19:6:26 | jsonData |
41-
| request.js:8:11:8:20 | {jsonData} |
42-
| request.js:8:11:8:20 | {jsonData} |
43-
| request.js:8:12:8:19 | jsonData |
44-
| request.js:13:18:13:24 | xmlData |
45-
| request.js:16:11:23:3 | {\\n u ... ody\\n } |
46-
| request.js:16:11:23:3 | {\\n u ... ody\\n } |
47-
| request.js:22:11:22:17 | xmlData |
48-
| request.js:28:52:28:55 | data |
49-
| request.js:28:52:28:55 | data |
50-
| request.js:35:14:35:17 | data |
51-
| request.js:43:51:43:54 | data |
52-
| request.js:43:51:43:54 | data |
53-
| request.js:50:13:50:16 | data |
54-
| sentAsHeaders.js:10:79:10:84 | buffer |
55-
| sentAsHeaders.js:10:79:10:84 | buffer |
56-
| sentAsHeaders.js:11:13:11:59 | content |
57-
| sentAsHeaders.js:11:23:11:28 | buffer |
58-
| sentAsHeaders.js:11:23:11:59 | buffer. ... esRead) |
59-
| sentAsHeaders.js:12:9:12:81 | content |
60-
| sentAsHeaders.js:12:19:12:25 | content |
61-
| sentAsHeaders.js:12:19:12:74 | content ... =", "") |
62-
| sentAsHeaders.js:12:19:12:81 | content ... .trim() |
63-
| sentAsHeaders.js:14:20:19:9 | {\\n ... } |
64-
| sentAsHeaders.js:14:20:19:9 | {\\n ... } |
65-
| sentAsHeaders.js:18:20:18:55 | { Refer ... ntent } |
66-
| sentAsHeaders.js:18:31:18:53 | "http:/ ... content |
67-
| sentAsHeaders.js:18:47:18:53 | content |
68-
| sentAsHeaders.js:20:20:25:9 | {\\n ... } |
69-
| sentAsHeaders.js:20:20:25:9 | {\\n ... } |
70-
| sentAsHeaders.js:24:20:24:55 | { Refer ... ntent } |
71-
| sentAsHeaders.js:24:31:24:53 | "http:/ ... content |
72-
| sentAsHeaders.js:24:47:24:53 | content |
731
edges
742
| FileAccessToHttp.js:4:5:4:47 | content | FileAccessToHttp.js:9:23:9:29 | content |
753
| FileAccessToHttp.js:4:15:4:47 | fs.read ... "utf8") | FileAccessToHttp.js:4:5:4:47 | content |
76-
| FileAccessToHttp.js:4:15:4:47 | fs.read ... "utf8") | FileAccessToHttp.js:4:5:4:47 | content |
77-
| FileAccessToHttp.js:9:12:9:31 | { Referer: content } | FileAccessToHttp.js:5:11:10:1 | {\\n hos ... ent }\\n} |
78-
| FileAccessToHttp.js:9:12:9:31 | { Referer: content } | FileAccessToHttp.js:5:11:10:1 | {\\n hos ... ent }\\n} |
79-
| FileAccessToHttp.js:9:23:9:29 | content | FileAccessToHttp.js:9:12:9:31 | { Referer: content } |
80-
| bufferRead.js:12:13:12:43 | buffer | bufferRead.js:15:26:15:31 | buffer |
81-
| bufferRead.js:12:22:12:43 | new Buf ... s.size) | bufferRead.js:12:13:12:43 | buffer |
4+
| FileAccessToHttp.js:5:11:10:1 | [post update] {\\n hos ... ent }\\n} [headers, Referer] | FileAccessToHttp.js:5:11:10:1 | {\\n hos ... ent }\\n} |
5+
| FileAccessToHttp.js:9:12:9:31 | { Referer: content } [Referer] | FileAccessToHttp.js:5:11:10:1 | [post update] {\\n hos ... ent }\\n} [headers, Referer] |
6+
| FileAccessToHttp.js:9:23:9:29 | content | FileAccessToHttp.js:9:12:9:31 | { Referer: content } [Referer] |
7+
| bufferRead.js:12:13:12:43 | buffer | bufferRead.js:13:21:13:26 | buffer |
8+
| bufferRead.js:12:13:12:43 | buffer | bufferRead.js:13:32:13:37 | buffer |
829
| bufferRead.js:12:22:12:43 | new Buf ... s.size) | bufferRead.js:12:13:12:43 | buffer |
83-
| bufferRead.js:15:15:15:62 | postData | bufferRead.js:33:21:33:28 | postData |
10+
| bufferRead.js:13:21:13:26 | buffer | bufferRead.js:13:32:13:37 | buffer |
11+
| bufferRead.js:13:32:13:37 | buffer | bufferRead.js:15:26:15:31 | buffer |
8412
| bufferRead.js:15:15:15:62 | postData | bufferRead.js:33:21:33:28 | postData |
8513
| bufferRead.js:15:26:15:31 | buffer | bufferRead.js:15:26:15:62 | buffer. ... esRead) |
8614
| bufferRead.js:15:26:15:62 | buffer. ... esRead) | bufferRead.js:15:15:15:62 | postData |
87-
| googlecompiler.js:7:19:7:28 | codestring | googlecompiler.js:14:21:14:30 | codestring |
88-
| googlecompiler.js:9:7:15:4 | post_data | googlecompiler.js:38:18:38:26 | post_data |
89-
| googlecompiler.js:9:7:15:4 | post_data | googlecompiler.js:38:18:38:26 | post_data |
90-
| googlecompiler.js:9:19:15:4 | queryst ... dy\\n }) | googlecompiler.js:9:7:15:4 | post_data |
91-
| googlecompiler.js:9:41:15:3 | {\\n ... ody\\n } | googlecompiler.js:9:19:15:4 | queryst ... dy\\n }) |
92-
| googlecompiler.js:14:21:14:30 | codestring | googlecompiler.js:9:41:15:3 | {\\n ... ody\\n } |
93-
| googlecompiler.js:44:54:44:57 | data | googlecompiler.js:56:14:56:17 | data |
94-
| googlecompiler.js:44:54:44:57 | data | googlecompiler.js:56:14:56:17 | data |
95-
| googlecompiler.js:56:14:56:17 | data | googlecompiler.js:7:19:7:28 | codestring |
9615
| readFileSync.js:5:5:5:39 | data | readFileSync.js:7:11:7:14 | data |
9716
| readFileSync.js:5:12:5:39 | fs.read ... t.txt") | readFileSync.js:5:5:5:39 | data |
98-
| readFileSync.js:5:12:5:39 | fs.read ... t.txt") | readFileSync.js:5:5:5:39 | data |
99-
| readFileSync.js:7:7:7:25 | s | readFileSync.js:26:18:26:18 | s |
10017
| readFileSync.js:7:7:7:25 | s | readFileSync.js:26:18:26:18 | s |
10118
| readFileSync.js:7:11:7:14 | data | readFileSync.js:7:11:7:25 | data.toString() |
10219
| readFileSync.js:7:11:7:25 | data.toString() | readFileSync.js:7:7:7:25 | s |
10320
| readStreamRead.js:13:13:13:35 | chunk | readStreamRead.js:30:19:30:23 | chunk |
104-
| readStreamRead.js:13:13:13:35 | chunk | readStreamRead.js:30:19:30:23 | chunk |
105-
| readStreamRead.js:13:21:13:35 | readable.read() | readStreamRead.js:13:13:13:35 | chunk |
10621
| readStreamRead.js:13:21:13:35 | readable.read() | readStreamRead.js:13:13:13:35 | chunk |
10722
| request.js:6:19:6:26 | jsonData | request.js:8:12:8:19 | jsonData |
108-
| request.js:8:12:8:19 | jsonData | request.js:8:11:8:20 | {jsonData} |
109-
| request.js:8:12:8:19 | jsonData | request.js:8:11:8:20 | {jsonData} |
23+
| request.js:8:11:8:20 | [post update] {jsonData} [jsonData] | request.js:8:11:8:20 | {jsonData} |
24+
| request.js:8:12:8:19 | jsonData | request.js:8:11:8:20 | [post update] {jsonData} [jsonData] |
11025
| request.js:13:18:13:24 | xmlData | request.js:22:11:22:17 | xmlData |
111-
| request.js:22:11:22:17 | xmlData | request.js:16:11:23:3 | {\\n u ... ody\\n } |
112-
| request.js:22:11:22:17 | xmlData | request.js:16:11:23:3 | {\\n u ... ody\\n } |
113-
| request.js:28:52:28:55 | data | request.js:35:14:35:17 | data |
26+
| request.js:16:11:23:3 | [post update] {\\n u ... ody\\n } [body] | request.js:16:11:23:3 | {\\n u ... ody\\n } |
27+
| request.js:22:11:22:17 | xmlData | request.js:16:11:23:3 | [post update] {\\n u ... ody\\n } [body] |
11428
| request.js:28:52:28:55 | data | request.js:35:14:35:17 | data |
11529
| request.js:35:14:35:17 | data | request.js:6:19:6:26 | jsonData |
11630
| request.js:43:51:43:54 | data | request.js:50:13:50:16 | data |
117-
| request.js:43:51:43:54 | data | request.js:50:13:50:16 | data |
11831
| request.js:50:13:50:16 | data | request.js:13:18:13:24 | xmlData |
11932
| sentAsHeaders.js:10:79:10:84 | buffer | sentAsHeaders.js:11:23:11:28 | buffer |
120-
| sentAsHeaders.js:10:79:10:84 | buffer | sentAsHeaders.js:11:23:11:28 | buffer |
12133
| sentAsHeaders.js:11:13:11:59 | content | sentAsHeaders.js:12:19:12:25 | content |
12234
| sentAsHeaders.js:11:23:11:28 | buffer | sentAsHeaders.js:11:23:11:59 | buffer. ... esRead) |
12335
| sentAsHeaders.js:11:23:11:59 | buffer. ... esRead) | sentAsHeaders.js:11:13:11:59 | content |
@@ -126,18 +38,72 @@ edges
12638
| sentAsHeaders.js:12:19:12:25 | content | sentAsHeaders.js:12:19:12:74 | content ... =", "") |
12739
| sentAsHeaders.js:12:19:12:74 | content ... =", "") | sentAsHeaders.js:12:19:12:81 | content ... .trim() |
12840
| sentAsHeaders.js:12:19:12:81 | content ... .trim() | sentAsHeaders.js:12:9:12:81 | content |
129-
| sentAsHeaders.js:18:20:18:55 | { Refer ... ntent } | sentAsHeaders.js:14:20:19:9 | {\\n ... } |
130-
| sentAsHeaders.js:18:20:18:55 | { Refer ... ntent } | sentAsHeaders.js:14:20:19:9 | {\\n ... } |
131-
| sentAsHeaders.js:18:31:18:53 | "http:/ ... content | sentAsHeaders.js:18:20:18:55 | { Refer ... ntent } |
41+
| sentAsHeaders.js:14:20:19:9 | [post update] {\\n ... } [headers, Referer] | sentAsHeaders.js:14:20:19:9 | {\\n ... } |
42+
| sentAsHeaders.js:18:20:18:55 | { Refer ... ntent } [Referer] | sentAsHeaders.js:14:20:19:9 | [post update] {\\n ... } [headers, Referer] |
43+
| sentAsHeaders.js:18:31:18:53 | "http:/ ... content | sentAsHeaders.js:18:20:18:55 | { Refer ... ntent } [Referer] |
13244
| sentAsHeaders.js:18:47:18:53 | content | sentAsHeaders.js:18:31:18:53 | "http:/ ... content |
133-
| sentAsHeaders.js:24:20:24:55 | { Refer ... ntent } | sentAsHeaders.js:20:20:25:9 | {\\n ... } |
134-
| sentAsHeaders.js:24:20:24:55 | { Refer ... ntent } | sentAsHeaders.js:20:20:25:9 | {\\n ... } |
135-
| sentAsHeaders.js:24:31:24:53 | "http:/ ... content | sentAsHeaders.js:24:20:24:55 | { Refer ... ntent } |
45+
| sentAsHeaders.js:20:20:25:9 | [post update] {\\n ... } [headers, Referer] | sentAsHeaders.js:20:20:25:9 | {\\n ... } |
46+
| sentAsHeaders.js:24:20:24:55 | { Refer ... ntent } [Referer] | sentAsHeaders.js:20:20:25:9 | [post update] {\\n ... } [headers, Referer] |
47+
| sentAsHeaders.js:24:31:24:53 | "http:/ ... content | sentAsHeaders.js:24:20:24:55 | { Refer ... ntent } [Referer] |
13648
| sentAsHeaders.js:24:47:24:53 | content | sentAsHeaders.js:24:31:24:53 | "http:/ ... content |
49+
nodes
50+
| FileAccessToHttp.js:4:5:4:47 | content | semmle.label | content |
51+
| FileAccessToHttp.js:4:15:4:47 | fs.read ... "utf8") | semmle.label | fs.read ... "utf8") |
52+
| FileAccessToHttp.js:5:11:10:1 | [post update] {\\n hos ... ent }\\n} [headers, Referer] | semmle.label | [post update] {\\n hos ... ent }\\n} [headers, Referer] |
53+
| FileAccessToHttp.js:5:11:10:1 | {\\n hos ... ent }\\n} | semmle.label | {\\n hos ... ent }\\n} |
54+
| FileAccessToHttp.js:9:12:9:31 | { Referer: content } [Referer] | semmle.label | { Referer: content } [Referer] |
55+
| FileAccessToHttp.js:9:23:9:29 | content | semmle.label | content |
56+
| bufferRead.js:12:13:12:43 | buffer | semmle.label | buffer |
57+
| bufferRead.js:12:22:12:43 | new Buf ... s.size) | semmle.label | new Buf ... s.size) |
58+
| bufferRead.js:13:21:13:26 | buffer | semmle.label | buffer |
59+
| bufferRead.js:13:32:13:37 | buffer | semmle.label | buffer |
60+
| bufferRead.js:15:15:15:62 | postData | semmle.label | postData |
61+
| bufferRead.js:15:26:15:31 | buffer | semmle.label | buffer |
62+
| bufferRead.js:15:26:15:62 | buffer. ... esRead) | semmle.label | buffer. ... esRead) |
63+
| bufferRead.js:33:21:33:28 | postData | semmle.label | postData |
64+
| readFileSync.js:5:5:5:39 | data | semmle.label | data |
65+
| readFileSync.js:5:12:5:39 | fs.read ... t.txt") | semmle.label | fs.read ... t.txt") |
66+
| readFileSync.js:7:7:7:25 | s | semmle.label | s |
67+
| readFileSync.js:7:11:7:14 | data | semmle.label | data |
68+
| readFileSync.js:7:11:7:25 | data.toString() | semmle.label | data.toString() |
69+
| readFileSync.js:26:18:26:18 | s | semmle.label | s |
70+
| readStreamRead.js:13:13:13:35 | chunk | semmle.label | chunk |
71+
| readStreamRead.js:13:21:13:35 | readable.read() | semmle.label | readable.read() |
72+
| readStreamRead.js:30:19:30:23 | chunk | semmle.label | chunk |
73+
| request.js:6:19:6:26 | jsonData | semmle.label | jsonData |
74+
| request.js:8:11:8:20 | [post update] {jsonData} [jsonData] | semmle.label | [post update] {jsonData} [jsonData] |
75+
| request.js:8:11:8:20 | {jsonData} | semmle.label | {jsonData} |
76+
| request.js:8:12:8:19 | jsonData | semmle.label | jsonData |
77+
| request.js:13:18:13:24 | xmlData | semmle.label | xmlData |
78+
| request.js:16:11:23:3 | [post update] {\\n u ... ody\\n } [body] | semmle.label | [post update] {\\n u ... ody\\n } [body] |
79+
| request.js:16:11:23:3 | {\\n u ... ody\\n } | semmle.label | {\\n u ... ody\\n } |
80+
| request.js:22:11:22:17 | xmlData | semmle.label | xmlData |
81+
| request.js:28:52:28:55 | data | semmle.label | data |
82+
| request.js:35:14:35:17 | data | semmle.label | data |
83+
| request.js:43:51:43:54 | data | semmle.label | data |
84+
| request.js:50:13:50:16 | data | semmle.label | data |
85+
| sentAsHeaders.js:10:79:10:84 | buffer | semmle.label | buffer |
86+
| sentAsHeaders.js:11:13:11:59 | content | semmle.label | content |
87+
| sentAsHeaders.js:11:23:11:28 | buffer | semmle.label | buffer |
88+
| sentAsHeaders.js:11:23:11:59 | buffer. ... esRead) | semmle.label | buffer. ... esRead) |
89+
| sentAsHeaders.js:12:9:12:81 | content | semmle.label | content |
90+
| sentAsHeaders.js:12:19:12:25 | content | semmle.label | content |
91+
| sentAsHeaders.js:12:19:12:74 | content ... =", "") | semmle.label | content ... =", "") |
92+
| sentAsHeaders.js:12:19:12:81 | content ... .trim() | semmle.label | content ... .trim() |
93+
| sentAsHeaders.js:14:20:19:9 | [post update] {\\n ... } [headers, Referer] | semmle.label | [post update] {\\n ... } [headers, Referer] |
94+
| sentAsHeaders.js:14:20:19:9 | {\\n ... } | semmle.label | {\\n ... } |
95+
| sentAsHeaders.js:18:20:18:55 | { Refer ... ntent } [Referer] | semmle.label | { Refer ... ntent } [Referer] |
96+
| sentAsHeaders.js:18:31:18:53 | "http:/ ... content | semmle.label | "http:/ ... content |
97+
| sentAsHeaders.js:18:47:18:53 | content | semmle.label | content |
98+
| sentAsHeaders.js:20:20:25:9 | [post update] {\\n ... } [headers, Referer] | semmle.label | [post update] {\\n ... } [headers, Referer] |
99+
| sentAsHeaders.js:20:20:25:9 | {\\n ... } | semmle.label | {\\n ... } |
100+
| sentAsHeaders.js:24:20:24:55 | { Refer ... ntent } [Referer] | semmle.label | { Refer ... ntent } [Referer] |
101+
| sentAsHeaders.js:24:31:24:53 | "http:/ ... content | semmle.label | "http:/ ... content |
102+
| sentAsHeaders.js:24:47:24:53 | content | semmle.label | content |
103+
subpaths
137104
#select
138105
| FileAccessToHttp.js:5:11:10:1 | {\\n hos ... ent }\\n} | FileAccessToHttp.js:4:15:4:47 | fs.read ... "utf8") | FileAccessToHttp.js:5:11:10:1 | {\\n hos ... ent }\\n} | Outbound network request depends on $@. | FileAccessToHttp.js:4:15:4:47 | fs.read ... "utf8") | file data |
139106
| bufferRead.js:33:21:33:28 | postData | bufferRead.js:12:22:12:43 | new Buf ... s.size) | bufferRead.js:33:21:33:28 | postData | Outbound network request depends on $@. | bufferRead.js:12:22:12:43 | new Buf ... s.size) | file data |
140-
| googlecompiler.js:38:18:38:26 | post_data | googlecompiler.js:44:54:44:57 | data | googlecompiler.js:38:18:38:26 | post_data | Outbound network request depends on $@. | googlecompiler.js:44:54:44:57 | data | file data |
141107
| readFileSync.js:26:18:26:18 | s | readFileSync.js:5:12:5:39 | fs.read ... t.txt") | readFileSync.js:26:18:26:18 | s | Outbound network request depends on $@. | readFileSync.js:5:12:5:39 | fs.read ... t.txt") | file data |
142108
| readStreamRead.js:30:19:30:23 | chunk | readStreamRead.js:13:21:13:35 | readable.read() | readStreamRead.js:30:19:30:23 | chunk | Outbound network request depends on $@. | readStreamRead.js:13:21:13:35 | readable.read() | file data |
143109
| request.js:8:11:8:20 | {jsonData} | request.js:28:52:28:55 | data | request.js:8:11:8:20 | {jsonData} | Outbound network request depends on $@. | request.js:28:52:28:55 | data | file data |

0 commit comments

Comments
 (0)