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

Skip to content

Commit ec81e36

Browse files
committed
JS: Use type info in Firebase model
1 parent f414483 commit ec81e36

1 file changed

Lines changed: 14 additions & 1 deletion

File tree

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

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,11 @@ module Firebase {
2727

2828
/** Gets a reference to a Firebase app created with `initializeApp`. */
2929
private DataFlow::SourceNode initApp(DataFlow::TypeTracker t) {
30-
result = firebase().getAMethodCall("initializeApp") and t.start()
30+
t.start() and
31+
result = firebase().getAMethodCall("initializeApp")
32+
or
33+
t.start() and
34+
result.hasUnderlyingType("firebase", "app.App")
3135
or
3236
exists (DataFlow::TypeTracker t2 |
3337
result = initApp(t2).track(t2, t)
@@ -48,6 +52,9 @@ module Firebase {
4852
private DataFlow::SourceNode database(DataFlow::TypeTracker t) {
4953
result = app().getAMethodCall("database") and t.start()
5054
or
55+
t.start() and
56+
result.hasUnderlyingType("firebase", "database.Database")
57+
or
5158
exists (DataFlow::TypeTracker t2 |
5259
result = database(t2).track(t2, t)
5360
)
@@ -78,6 +85,8 @@ module Firebase {
7885
)
7986
or
8087
result = snapshot().getAPropertyRead("ref")
88+
or
89+
result.hasUnderlyingType("firebase", "database.Reference")
8190
)
8291
or
8392
exists (DataFlow::TypeTracker t2 |
@@ -102,6 +111,8 @@ module Firebase {
102111
name = "orderBy" + any(string s) or
103112
name = "startAt"
104113
)
114+
or
115+
result.hasUnderlyingType("firebase", "database.Query")
105116
)
106117
or
107118
exists (DataFlow::TypeTracker t2 |
@@ -293,6 +304,8 @@ module Firebase {
293304
prop = "before" or // only defined on Change objects
294305
prop = "after"
295306
)
307+
or
308+
result.hasUnderlyingType("firebase", "database.DataSnapshot")
296309
)
297310
or
298311
promiseTaintStep(snapshot(t), result)

0 commit comments

Comments
 (0)