Check package name format before using it for SPA nav
Bug: b/372895305 Test: unit test Flag: EXEMPT bug fix Change-Id: Ife615c78c48a2d6f5b938c880c9c2128c5551644
This commit is contained in:
@@ -38,7 +38,7 @@ class SpaAppBridgeActivity : Activity() {
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun getDestinationForApp(destinationPrefix: String, intent: Intent): String? {
|
fun getDestinationForApp(destinationPrefix: String, intent: Intent): String? {
|
||||||
val packageName = intent.data?.schemeSpecificPart ?: return null
|
val packageName = intent.data?.schemeSpecificPart?.takeIf { Regex("^([a-zA-Z]\\w*\\.)*[a-zA-Z]\\w*$").matches(it) } ?: return null
|
||||||
return "$destinationPrefix/$packageName/${UserHandle.myUserId()}"
|
return "$destinationPrefix/$packageName/${UserHandle.myUserId()}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -37,6 +37,16 @@ class SpaAppBridgeActivityTest {
|
|||||||
|
|
||||||
assertThat(destination).isEqualTo("$DESTINATION/$PACKAGE_NAME/${UserHandle.myUserId()}")
|
assertThat(destination).isEqualTo("$DESTINATION/$PACKAGE_NAME/${UserHandle.myUserId()}")
|
||||||
}
|
}
|
||||||
|
@Test
|
||||||
|
fun getDestinationForApp_hasMalformedPackageName() {
|
||||||
|
val intent = Intent().apply {
|
||||||
|
data = Uri.parse("package:package.name/10#")
|
||||||
|
}
|
||||||
|
|
||||||
|
val destination = getDestinationForApp(DESTINATION, intent)
|
||||||
|
|
||||||
|
assertThat(destination).isNull()
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun getDestinationForApp_noPackageName() {
|
fun getDestinationForApp_noPackageName() {
|
||||||
|
Reference in New Issue
Block a user