Check package name format before using it for SPA nav

Bug: b/372895305
Test: unit test
Flag: EXEMPT bug fix
(cherry picked from commit b2ee5ccf5b79d50cf53a86716042f0e2d7ff42ad)
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:9e4964ff220a40282478fd3769e20779ce49a342)
Merged-In: Ife615c78c48a2d6f5b938c880c9c2128c5551644
Change-Id: Ife615c78c48a2d6f5b938c880c9c2128c5551644
diff --git a/src/com/android/settings/spa/SpaAppBridgeActivity.kt b/src/com/android/settings/spa/SpaAppBridgeActivity.kt
index a68d220..67a5be9 100644
--- a/src/com/android/settings/spa/SpaAppBridgeActivity.kt
+++ b/src/com/android/settings/spa/SpaAppBridgeActivity.kt
@@ -38,7 +38,7 @@
 
     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()}"
         }
     }
diff --git a/tests/spa_unit/src/com/android/settings/spa/SpaAppBridgeActivityTest.kt b/tests/spa_unit/src/com/android/settings/spa/SpaAppBridgeActivityTest.kt
index be2b5e0..134cdb4 100644
--- a/tests/spa_unit/src/com/android/settings/spa/SpaAppBridgeActivityTest.kt
+++ b/tests/spa_unit/src/com/android/settings/spa/SpaAppBridgeActivityTest.kt
@@ -37,6 +37,16 @@
 
         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() {
OSZAR »