@@ -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