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:
zhibinliu
2024-12-20 08:14:09 +00:00
committed by Zhibin Liu
parent 70c56ec8c9
commit b2ee5ccf5b
2 changed files with 11 additions and 1 deletions

View File

@@ -38,7 +38,7 @@ class SpaAppBridgeActivity : Activity() {
companion object {
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()}"
}
}

View File

@@ -37,6 +37,16 @@ class SpaAppBridgeActivityTest {
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
fun getDestinationForApp_noPackageName() {