Skip to content

Commit 5373425

Browse files
committed
Add a check on incoming intent.
1 parent 355d091 commit 5373425

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

changelog.d/+check-intent.bugfix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Add a check on incoming intent.

vector/src/main/java/im/vector/app/features/MainActivity.kt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ import im.vector.app.features.analytics.VectorAnalytics
3939
import im.vector.app.features.analytics.plan.ViewRoom
4040
import im.vector.app.features.home.HomeActivity
4141
import im.vector.app.features.home.ShortcutsHandler
42+
import im.vector.app.features.home.room.detail.RoomDetailActivity
43+
import im.vector.app.features.home.room.threads.ThreadsActivity
44+
import im.vector.app.features.location.live.map.LiveLocationMapViewActivity
4245
import im.vector.app.features.notifications.NotificationDrawerManager
4346
import im.vector.app.features.pin.UnlockedActivity
4447
import im.vector.app.features.pin.lockscreen.crypto.LockScreenKeyRepository
@@ -115,6 +118,14 @@ class MainActivity : VectorBaseActivity<ActivityMainBinding>(), UnlockedActivity
115118
putExtra(EXTRA_ROOM_ID, roomId)
116119
}
117120
}
121+
122+
val allowList = listOf(
123+
HomeActivity::class.java.name,
124+
MainActivity::class.java.name,
125+
RoomDetailActivity::class.java.name,
126+
ThreadsActivity::class.java.name,
127+
LiveLocationMapViewActivity::class.java.name,
128+
)
118129
}
119130

120131
private val startAppViewModel: StartAppViewModel by viewModel()
@@ -186,6 +197,7 @@ class MainActivity : VectorBaseActivity<ActivityMainBinding>(), UnlockedActivity
186197
// Start the next Activity
187198
startSyncing()
188199
val nextIntent = intent.getParcelableExtraCompat<Intent>(EXTRA_NEXT_INTENT)
200+
?.takeIf { it.isValid() }
189201
startIntentAndFinish(nextIntent)
190202
} else if (intent.hasExtra(EXTRA_INIT_SESSION)) {
191203
startSyncing()
@@ -380,4 +392,11 @@ class MainActivity : VectorBaseActivity<ActivityMainBinding>(), UnlockedActivity
380392
intent?.let { startActivity(it) }
381393
finish()
382394
}
395+
396+
private fun Intent.isValid(): Boolean {
397+
val componentName = resolveActivity(packageManager) ?: return false
398+
val packageName = componentName.packageName
399+
val className = componentName.className
400+
return packageName == buildMeta.applicationId && className in allowList
401+
}
383402
}

0 commit comments

Comments
 (0)