add service flow sources

This commit is contained in:
Jami Cogswell
2022-09-19 15:54:45 -04:00
parent 3bd456e52d
commit decba39c09
2 changed files with 29 additions and 0 deletions

View File

@@ -250,6 +250,12 @@ class AndroidIntentInput extends DataFlow::Node {
this.asParameter() = m.getParameter(1) and
receiverType = m.getDeclaringType()
)
or
exists(Method m, AndroidServiceIntentMethod sI |
m.overrides*(sI) and
this.asParameter() = m.getParameter(0) and
receiverType = m.getDeclaringType()
)
}
}

View File

@@ -22,6 +22,13 @@ class TypeActivity extends Class {
TypeActivity() { this.hasQualifiedName("android.app", "Activity") }
}
/**
* The class `android.app.Service`.
*/
class TypeService extends Class {
TypeService() { this.hasQualifiedName("android.app", "Service") }
}
/**
* The class `android.content.Context`.
*/
@@ -57,6 +64,22 @@ class AndroidReceiveIntentMethod extends Method {
}
}
/**
* A method of type Service that receives an Intent.
* Namely, `Service.onStart`, `onStartCommand`, `onBind`,
* `onRebind`, `onUnbind`, or `onTaskRemoved`
*/
class AndroidServiceIntentMethod extends Method {
AndroidServiceIntentMethod() {
(
this.getName().matches("onStart%") or
this.getName().matches("on%ind") or
this.hasName("onTaskRemoved")
) and
this.getDeclaringType() instanceof TypeService
}
}
/**
* The method `Context.startActivity` or `startActivities`.
*/