From b2ee5ccf5b79d50cf53a86716042f0e2d7ff42ad Mon Sep 17 00:00:00 2001 From: zhibinliu Date: Fri, 20 Dec 2024 08:14:09 +0000 Subject: [PATCH] Check package name format before using it for SPA nav Bug: b/372895305 Test: unit test Flag: EXEMPT bug fix Change-Id: Ife615c78c48a2d6f5b938c880c9c2128c5551644 --- src/com/android/settings/spa/SpaAppBridgeActivity.kt | 2 +- .../android/settings/spa/SpaAppBridgeActivityTest.kt | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/spa/SpaAppBridgeActivity.kt b/src/com/android/settings/spa/SpaAppBridgeActivity.kt index a68d2204c3b..67a5be951fd 100644 --- a/src/com/android/settings/spa/SpaAppBridgeActivity.kt +++ b/src/com/android/settings/spa/SpaAppBridgeActivity.kt @@ -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()}" } } 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 be2b5e0bb35..134cdb487c2 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 @@ 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() {