Skip to content

Commit d7c3ac4

Browse files
authored
Merge pull request github#13349 from erik-krogh/stopRecLaterAccess
JS: stop recursive fromRhs related to getLaterBaseAccess
2 parents 84a7b3c + 1b44b59 commit d7c3ac4

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,8 @@ module AccessPath {
234234
or
235235
baseName = fromRhs(write.getBase(), root)
236236
or
237-
baseName = fromRhs(GetLaterAccess::getLaterBaseAccess(write), root)
237+
baseName = fromRhs(GetLaterAccess::getLaterBaseAccess(write), root) and
238+
not baseName.matches("%.%")
238239
)
239240
or
240241
exists(GlobalVariable var |
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
2+
// stress test for global access path computation
3+
var MyObject = {}
4+
MyObject.Foo1 = { inner: MyObject };
5+
MyObject.Foo2 = { inner: MyObject };
6+
MyObject.Foo3 = { inner: MyObject };
7+
MyObject.Foo4 = { inner: MyObject };
8+
MyObject.Foo5 = { inner: MyObject };
9+
MyObject.Foo6 = { inner: MyObject };
10+
MyObject.Foo7 = { inner: MyObject };
11+
MyObject.Foo8 = { inner: MyObject };
12+
MyObject.Foo9 = { inner: MyObject };
13+
MyObject.Fooa = { inner: MyObject };
14+
MyObject.Foob = { inner: MyObject };
15+
MyObject.Fooc = { inner: MyObject };
16+
MyObject.Food = { inner: MyObject };
17+
MyObject.Fooe = { inner: MyObject };
18+
MyObject.Foof = { inner: MyObject };
19+
MyObject.Foog = { inner: MyObject };
20+
MyObject.Fooh = { inner: MyObject };
21+
MyObject.Fooi = { inner: MyObject };
22+
MyObject.Fooj = { inner: MyObject };
23+
MyObject.Fook = { inner: MyObject };
24+
MyObject.Fool = { inner: MyObject };
25+
MyObject.Foom = { inner: MyObject };
26+
MyObject.Foon = { inner: MyObject };
27+
MyObject.Fooo = { inner: MyObject };
28+
MyObject.Foop = { inner: MyObject };
29+
MyObject.Fooq = { inner: MyObject };
30+
MyObject.Foor = { inner: MyObject };
31+
MyObject.Foos = { inner: MyObject };
32+
MyObject.Foot = { inner: MyObject };
33+
exports.MyObject = MyObject;

0 commit comments

Comments
 (0)