Skip to content

Commit 712c69e

Browse files
committed
JS: Fixup the test expectations
1 parent f8ff504 commit 712c69e

File tree

5 files changed

+72
-65
lines changed

5 files changed

+72
-65
lines changed

javascript/ql/test/query-tests/Security/CWE-601/ClientSideUrlRedirect/ClientSideUrlRedirect.expected

Lines changed: 35 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,16 @@ nodes
4141
| tst10.js:11:27:11:50 | documen ... .search | semmle.label | documen ... .search |
4242
| tst10.js:14:17:14:56 | 'https: ... .search | semmle.label | 'https: ... .search |
4343
| tst10.js:14:33:14:56 | documen ... .search | semmle.label | documen ... .search |
44-
| tst12.js:3:9:3:50 | urlParts | semmle.label | urlParts |
45-
| tst12.js:3:9:3:50 | urlParts [ArrayElement] | semmle.label | urlParts [ArrayElement] |
46-
| tst12.js:3:20:3:39 | window.location.hash | semmle.label | window.location.hash |
47-
| tst12.js:3:20:3:50 | window. ... it('?') | semmle.label | window. ... it('?') |
48-
| tst12.js:3:20:3:50 | window. ... it('?') [ArrayElement] | semmle.label | window. ... it('?') [ArrayElement] |
49-
| tst12.js:4:9:4:45 | loc | semmle.label | loc |
50-
| tst12.js:4:15:4:22 | urlParts | semmle.label | urlParts |
51-
| tst12.js:4:15:4:22 | urlParts [ArrayElement] | semmle.label | urlParts [ArrayElement] |
52-
| tst12.js:4:15:4:25 | urlParts[0] | semmle.label | urlParts[0] |
53-
| tst12.js:5:23:5:25 | loc | semmle.label | loc |
44+
| tst12.js:2:9:2:50 | urlParts | semmle.label | urlParts |
45+
| tst12.js:2:9:2:50 | urlParts [ArrayElement] | semmle.label | urlParts [ArrayElement] |
46+
| tst12.js:2:20:2:39 | window.location.hash | semmle.label | window.location.hash |
47+
| tst12.js:2:20:2:50 | window. ... it('?') | semmle.label | window. ... it('?') |
48+
| tst12.js:2:20:2:50 | window. ... it('?') [ArrayElement] | semmle.label | window. ... it('?') [ArrayElement] |
49+
| tst12.js:3:9:3:45 | loc | semmle.label | loc |
50+
| tst12.js:3:15:3:22 | urlParts | semmle.label | urlParts |
51+
| tst12.js:3:15:3:22 | urlParts [ArrayElement] | semmle.label | urlParts [ArrayElement] |
52+
| tst12.js:3:15:3:25 | urlParts[0] | semmle.label | urlParts[0] |
53+
| tst12.js:4:23:4:25 | loc | semmle.label | loc |
5454
| tst13.js:2:9:2:52 | payload | semmle.label | payload |
5555
| tst13.js:2:19:2:42 | documen ... .search | semmle.label | documen ... .search |
5656
| tst13.js:2:19:2:52 | documen ... bstr(1) | semmle.label | documen ... bstr(1) |
@@ -109,16 +109,20 @@ nodes
109109
| tst.js:26:22:26:79 | new Reg ... n.href) | semmle.label | new Reg ... n.href) |
110110
| tst.js:26:22:26:82 | new Reg ... ref)[1] | semmle.label | new Reg ... ref)[1] |
111111
| tst.js:26:62:26:78 | win.location.href | semmle.label | win.location.href |
112-
| typed.ts:4:13:4:36 | params | semmle.label | params |
112+
| typed.ts:4:13:4:49 | params | semmle.label | params |
113113
| typed.ts:4:22:4:36 | location.search | semmle.label | location.search |
114+
| typed.ts:4:22:4:49 | locatio ... ring(1) | semmle.label | locatio ... ring(1) |
114115
| typed.ts:5:25:5:30 | params | semmle.label | params |
115116
| typed.ts:7:24:7:34 | redirectUri | semmle.label | redirectUri |
116117
| typed.ts:8:33:8:43 | redirectUri | semmle.label | redirectUri |
117118
| typed.ts:25:25:25:34 | loc.search | semmle.label | loc.search |
119+
| typed.ts:25:25:25:47 | loc.sea ... ring(1) | semmle.label | loc.sea ... ring(1) |
118120
| typed.ts:28:24:28:34 | redirectUri | semmle.label | redirectUri |
119121
| typed.ts:29:33:29:43 | redirectUri | semmle.label | redirectUri |
120122
| typed.ts:47:25:47:34 | loc.search | semmle.label | loc.search |
123+
| typed.ts:47:25:47:47 | loc.sea ... ring(1) | semmle.label | loc.sea ... ring(1) |
121124
| typed.ts:48:26:48:36 | loc2.search | semmle.label | loc2.search |
125+
| typed.ts:48:26:48:49 | loc2.se ... ring(1) | semmle.label | loc2.se ... ring(1) |
122126
| typed.ts:51:24:51:34 | redirectUri | semmle.label | redirectUri |
123127
| typed.ts:52:33:52:43 | redirectUri | semmle.label | redirectUri |
124128
| typed.ts:55:25:55:35 | redirectUri | semmle.label | redirectUri |
@@ -149,16 +153,16 @@ edges
149153
| tst10.js:8:24:8:47 | documen ... .search | tst10.js:8:17:8:47 | '//' + ... .search | provenance | |
150154
| tst10.js:11:27:11:50 | documen ... .search | tst10.js:11:17:11:50 | '//foo' ... .search | provenance | |
151155
| tst10.js:14:33:14:56 | documen ... .search | tst10.js:14:17:14:56 | 'https: ... .search | provenance | |
152-
| tst12.js:3:9:3:50 | urlParts | tst12.js:4:15:4:22 | urlParts | provenance | |
153-
| tst12.js:3:9:3:50 | urlParts [ArrayElement] | tst12.js:4:15:4:22 | urlParts [ArrayElement] | provenance | |
154-
| tst12.js:3:20:3:39 | window.location.hash | tst12.js:3:20:3:50 | window. ... it('?') | provenance | |
155-
| tst12.js:3:20:3:39 | window.location.hash | tst12.js:3:20:3:50 | window. ... it('?') [ArrayElement] | provenance | |
156-
| tst12.js:3:20:3:50 | window. ... it('?') | tst12.js:3:9:3:50 | urlParts | provenance | |
157-
| tst12.js:3:20:3:50 | window. ... it('?') [ArrayElement] | tst12.js:3:9:3:50 | urlParts [ArrayElement] | provenance | |
158-
| tst12.js:4:9:4:45 | loc | tst12.js:5:23:5:25 | loc | provenance | |
159-
| tst12.js:4:15:4:22 | urlParts | tst12.js:4:9:4:45 | loc | provenance | |
160-
| tst12.js:4:15:4:22 | urlParts [ArrayElement] | tst12.js:4:15:4:25 | urlParts[0] | provenance | |
161-
| tst12.js:4:15:4:25 | urlParts[0] | tst12.js:4:9:4:45 | loc | provenance | |
156+
| tst12.js:2:9:2:50 | urlParts | tst12.js:3:15:3:22 | urlParts | provenance | |
157+
| tst12.js:2:9:2:50 | urlParts [ArrayElement] | tst12.js:3:15:3:22 | urlParts [ArrayElement] | provenance | |
158+
| tst12.js:2:20:2:39 | window.location.hash | tst12.js:2:20:2:50 | window. ... it('?') | provenance | |
159+
| tst12.js:2:20:2:39 | window.location.hash | tst12.js:2:20:2:50 | window. ... it('?') [ArrayElement] | provenance | |
160+
| tst12.js:2:20:2:50 | window. ... it('?') | tst12.js:2:9:2:50 | urlParts | provenance | |
161+
| tst12.js:2:20:2:50 | window. ... it('?') [ArrayElement] | tst12.js:2:9:2:50 | urlParts [ArrayElement] | provenance | |
162+
| tst12.js:3:9:3:45 | loc | tst12.js:4:23:4:25 | loc | provenance | |
163+
| tst12.js:3:15:3:22 | urlParts | tst12.js:3:9:3:45 | loc | provenance | |
164+
| tst12.js:3:15:3:22 | urlParts [ArrayElement] | tst12.js:3:15:3:25 | urlParts[0] | provenance | |
165+
| tst12.js:3:15:3:25 | urlParts[0] | tst12.js:3:9:3:45 | loc | provenance | |
162166
| tst13.js:2:9:2:52 | payload | tst13.js:4:15:4:21 | payload | provenance | |
163167
| tst13.js:2:9:2:52 | payload | tst13.js:8:21:8:27 | payload | provenance | |
164168
| tst13.js:2:9:2:52 | payload | tst13.js:12:14:12:20 | payload | provenance | |
@@ -203,14 +207,18 @@ edges
203207
| tst.js:22:34:22:55 | documen ... on.href | tst.js:22:20:22:56 | indirec ... n.href) | provenance | Config |
204208
| tst.js:26:22:26:79 | new Reg ... n.href) | tst.js:26:22:26:82 | new Reg ... ref)[1] | provenance | |
205209
| tst.js:26:62:26:78 | win.location.href | tst.js:26:22:26:79 | new Reg ... n.href) | provenance | Config |
206-
| typed.ts:4:13:4:36 | params | typed.ts:5:25:5:30 | params | provenance | |
207-
| typed.ts:4:22:4:36 | location.search | typed.ts:4:13:4:36 | params | provenance | |
210+
| typed.ts:4:13:4:49 | params | typed.ts:5:25:5:30 | params | provenance | |
211+
| typed.ts:4:22:4:36 | location.search | typed.ts:4:22:4:49 | locatio ... ring(1) | provenance | |
212+
| typed.ts:4:22:4:49 | locatio ... ring(1) | typed.ts:4:13:4:49 | params | provenance | |
208213
| typed.ts:5:25:5:30 | params | typed.ts:7:24:7:34 | redirectUri | provenance | |
209214
| typed.ts:7:24:7:34 | redirectUri | typed.ts:8:33:8:43 | redirectUri | provenance | |
210-
| typed.ts:25:25:25:34 | loc.search | typed.ts:28:24:28:34 | redirectUri | provenance | |
215+
| typed.ts:25:25:25:34 | loc.search | typed.ts:25:25:25:47 | loc.sea ... ring(1) | provenance | |
216+
| typed.ts:25:25:25:47 | loc.sea ... ring(1) | typed.ts:28:24:28:34 | redirectUri | provenance | |
211217
| typed.ts:28:24:28:34 | redirectUri | typed.ts:29:33:29:43 | redirectUri | provenance | |
212-
| typed.ts:47:25:47:34 | loc.search | typed.ts:51:24:51:34 | redirectUri | provenance | |
213-
| typed.ts:48:26:48:36 | loc2.search | typed.ts:55:25:55:35 | redirectUri | provenance | |
218+
| typed.ts:47:25:47:34 | loc.search | typed.ts:47:25:47:47 | loc.sea ... ring(1) | provenance | |
219+
| typed.ts:47:25:47:47 | loc.sea ... ring(1) | typed.ts:51:24:51:34 | redirectUri | provenance | |
220+
| typed.ts:48:26:48:36 | loc2.search | typed.ts:48:26:48:49 | loc2.se ... ring(1) | provenance | |
221+
| typed.ts:48:26:48:49 | loc2.se ... ring(1) | typed.ts:55:25:55:35 | redirectUri | provenance | |
214222
| typed.ts:51:24:51:34 | redirectUri | typed.ts:52:33:52:43 | redirectUri | provenance | |
215223
| typed.ts:55:25:55:35 | redirectUri | typed.ts:56:33:56:43 | redirectUri | provenance | |
216224
subpaths
@@ -240,7 +248,7 @@ subpaths
240248
| tst10.js:8:17:8:47 | '//' + ... .search | tst10.js:8:24:8:47 | documen ... .search | tst10.js:8:17:8:47 | '//' + ... .search | Untrusted URL redirection depends on a $@. | tst10.js:8:24:8:47 | documen ... .search | user-provided value |
241249
| tst10.js:11:17:11:50 | '//foo' ... .search | tst10.js:11:27:11:50 | documen ... .search | tst10.js:11:17:11:50 | '//foo' ... .search | Untrusted URL redirection depends on a $@. | tst10.js:11:27:11:50 | documen ... .search | user-provided value |
242250
| tst10.js:14:17:14:56 | 'https: ... .search | tst10.js:14:33:14:56 | documen ... .search | tst10.js:14:17:14:56 | 'https: ... .search | Untrusted URL redirection depends on a $@. | tst10.js:14:33:14:56 | documen ... .search | user-provided value |
243-
| tst12.js:5:23:5:25 | loc | tst12.js:3:20:3:39 | window.location.hash | tst12.js:5:23:5:25 | loc | Untrusted URL redirection depends on a $@. | tst12.js:3:20:3:39 | window.location.hash | user-provided value |
251+
| tst12.js:4:23:4:25 | loc | tst12.js:2:20:2:39 | window.location.hash | tst12.js:4:23:4:25 | loc | Untrusted URL redirection depends on a $@. | tst12.js:2:20:2:39 | window.location.hash | user-provided value |
244252
| tst13.js:4:15:4:21 | payload | tst13.js:2:19:2:42 | documen ... .search | tst13.js:4:15:4:21 | payload | Untrusted URL redirection depends on a $@. | tst13.js:2:19:2:42 | documen ... .search | user-provided value |
245253
| tst13.js:8:21:8:27 | payload | tst13.js:2:19:2:42 | documen ... .search | tst13.js:8:21:8:27 | payload | Untrusted URL redirection depends on a $@. | tst13.js:2:19:2:42 | documen ... .search | user-provided value |
246254
| tst13.js:12:14:12:20 | payload | tst13.js:2:19:2:42 | documen ... .search | tst13.js:12:14:12:20 | payload | Untrusted URL redirection depends on a $@. | tst13.js:2:19:2:42 | documen ... .search | user-provided value |

javascript/ql/test/query-tests/Security/CWE-601/ClientSideUrlRedirect/Consistency.expected

Whitespace-only changes.
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
// NOT OK
21
function foo() {
32
var urlParts = window.location.hash.split('?');
43
var loc = urlParts[0] + "?" + boxes.value;
5-
window.location = loc
4+
window.location = loc; // OK [INCONSISTENCY] - always starts with '#'
65
}

javascript/ql/test/query-tests/Security/CWE-601/ClientSideUrlRedirect/tst13.js

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,48 @@
11
function foo() {
22
var payload = document.location.search.substr(1);
33
var el = document.createElement("a");
4-
el.href = payload;
5-
document.body.appendChild(el); // NOT OK
4+
el.href = payload; // NOT OK
5+
document.body.appendChild(el);
66

77
var el = document.createElement("button");
8-
el.formaction = payload;
9-
document.body.appendChild(el); // NOT OK
8+
el.formaction = payload; // NOT OK
9+
document.body.appendChild(el);
1010

1111
var el = document.createElement("embed");
12-
el.src = payload;
13-
document.body.appendChild(el); // NOT OK
12+
el.src = payload; // NOT OK
13+
document.body.appendChild(el);
1414

1515
var el = document.createElement("form");
16-
el.action = payload;
17-
document.body.appendChild(el); // NOT OK
16+
el.action = payload; // NOT OK
17+
document.body.appendChild(el);
1818

1919
var el = document.createElement("frame");
20-
el.src = payload;
21-
document.body.appendChild(el); // NOT OK
20+
el.src = payload; // NOT OK
21+
document.body.appendChild(el);
2222

2323
var el = document.createElement("iframe");
24-
el.src = payload;
25-
document.body.appendChild(el); // NOT OK
24+
el.src = payload; // NOT OK
25+
document.body.appendChild(el);
2626

2727
var el = document.createElement("input");
28-
el.formaction = payload;
29-
document.body.appendChild(el); // NOT OK
28+
el.formaction = payload; // NOT OK
29+
document.body.appendChild(el);
3030

3131
var el = document.createElement("isindex");
32-
el.action = payload;
33-
document.body.appendChild(el); // NOT OK
32+
el.action = payload; // NOT OK
33+
document.body.appendChild(el);
3434

3535
var el = document.createElement("isindex");
36-
el.formaction = payload;
37-
document.body.appendChild(el); // NOT OK
36+
el.formaction = payload; // NOT OK
37+
document.body.appendChild(el);
3838

3939
var el = document.createElement("object");
40-
el.data = payload;
41-
document.body.appendChild(el); // NOT OK
40+
el.data = payload; // NOT OK
41+
document.body.appendChild(el);
4242

4343
var el = document.createElement("script");
44-
el.src = payload;
45-
document.body.appendChild(el); // NOT OK
44+
el.src = payload; // NOT OK
45+
document.body.appendChild(el);
4646
}
4747

4848
(function () {
Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
export class MyComponent {
22
componentDidMount() {
33
const { location }: { location: Location } = (this as any).props;
4-
var params = location.search;
4+
var params = location.search.substring(1);
55
this.doRedirect(params);
66
}
77
private doRedirect(redirectUri: string) {
8-
window.location.replace(redirectUri);
8+
window.location.replace(redirectUri); // NOT OK
99
}
1010
}
1111

@@ -17,16 +17,16 @@ export class MyTrackingComponent {
1717
loc: location
1818
};
1919
var secondLoc = container.loc; // type-tracking step 1 - not the source
20-
21-
this.myIndirectRedirect(secondLoc);
20+
21+
this.myIndirectRedirect(secondLoc);
2222
}
2323

2424
private myIndirectRedirect(loc) { // type-tracking step 2 - also not the source
25-
this.doRedirect(loc.search);
25+
this.doRedirect(loc.search.substring(1));
2626
}
2727

2828
private doRedirect(redirectUri: string) {
29-
window.location.replace(redirectUri);
29+
window.location.replace(redirectUri); // NOT OK
3030
}
3131
}
3232

@@ -38,21 +38,21 @@ export class WeirdTracking {
3838
loc: location
3939
};
4040
var secondLoc = container.loc; // type-tracking step 1 - not the source
41-
42-
this.myIndirectRedirect(secondLoc);
41+
42+
this.myIndirectRedirect(secondLoc);
4343
}
4444

4545
private myIndirectRedirect(loc) { // type-tracking step 2 - also not the source
46-
const loc2 : Location = (loc as any).componentDidMount;
47-
this.doRedirect(loc.search);
48-
this.doRedirect2(loc2.search);
46+
const loc2: Location = (loc as any).componentDidMount;
47+
this.doRedirect(loc.search.substring(1));
48+
this.doRedirect2(loc2.search.substring(1));
4949
}
5050

5151
private doRedirect(redirectUri: string) {
52-
window.location.replace(redirectUri); // NOT OK - and correctly flagged
52+
window.location.replace(redirectUri); // NOT OK
5353
}
5454

5555
private doRedirect2(redirectUri: string) {
56-
window.location.replace(redirectUri); // NOT OK - and correctly flagged
56+
window.location.replace(redirectUri); // NOT OK
5757
}
58-
}
58+
}

0 commit comments

Comments
 (0)