Catch potential SecurityException in app deserializer

Close #1146
This commit is contained in:
MM20 2024-12-04 18:56:36 +01:00
parent 0413cb8ff6
commit 37db43405f
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389

View File

@ -43,6 +43,7 @@ class LauncherAppSerializer : SearchableSerializer {
class LauncherAppDeserializer(val context: Context) : SearchableDeserializer { class LauncherAppDeserializer(val context: Context) : SearchableDeserializer {
override suspend fun deserialize(serialized: String): SavableSearchable? { override suspend fun deserialize(serialized: String): SavableSearchable? {
try {
val json = JSONObject(serialized) val json = JSONObject(serialized)
val launcherApps = context.getSystemService<LauncherApps>()!! val launcherApps = context.getSystemService<LauncherApps>()!!
val userManager = context.getSystemService<UserManager>()!! val userManager = context.getSystemService<UserManager>()!!
@ -56,7 +57,10 @@ class LauncherAppDeserializer(val context: Context) : SearchableDeserializer {
if (isAtLeastApiLevel(35)) { if (isAtLeastApiLevel(35)) {
val launcherUser = launcherApps.getLauncherUserInfo(user) ?: return null val launcherUser = launcherApps.getLauncherUserInfo(user) ?: return null
if (launcherUser.userType == UserManager.USER_TYPE_PROFILE_PRIVATE && userManager.isQuietModeEnabled(user)) { if (launcherUser.userType == UserManager.USER_TYPE_PROFILE_PRIVATE && userManager.isQuietModeEnabled(
user
)
) {
return LockedPrivateProfileApp( return LockedPrivateProfileApp(
label = context.getString(R.string.app_label_locked_profile), label = context.getString(R.string.app_label_locked_profile),
componentName = componentName, componentName = componentName,
@ -69,7 +73,6 @@ class LauncherAppDeserializer(val context: Context) : SearchableDeserializer {
val intent = Intent().also { val intent = Intent().also {
it.component = componentName it.component = componentName
} }
try {
val launcherActivityInfo = launcherApps.resolveActivity(intent, user) ?: return null val launcherActivityInfo = launcherApps.resolveActivity(intent, user) ?: return null
return LauncherApp(context, launcherActivityInfo) return LauncherApp(context, launcherActivityInfo)
} catch (e: SecurityException) { } catch (e: SecurityException) {