From 1534c880efdcc04c2f73df227dbe52ba47cca369 Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Mon, 21 Jul 2025 09:11:24 +0530 Subject: [PATCH] Fix compilation errors --- .../player/mediabrowser/PackageValidator.kt | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/mediabrowser/PackageValidator.kt b/app/src/main/java/org/schabi/newpipe/player/mediabrowser/PackageValidator.kt index 973b11b37..a3fa9fa63 100644 --- a/app/src/main/java/org/schabi/newpipe/player/mediabrowser/PackageValidator.kt +++ b/app/src/main/java/org/schabi/newpipe/player/mediabrowser/PackageValidator.kt @@ -146,21 +146,19 @@ internal class PackageValidator(context: Context) { */ private fun buildCallerInfo(callingPackage: String): CallerPackageInfo? { val packageInfo = getPackageInfo(callingPackage) ?: return null + val applicationInfo = packageInfo.applicationInfo ?: return null - val appName = packageInfo.applicationInfo.loadLabel(packageManager).toString() - val uid = packageInfo.applicationInfo.uid + val appName = applicationInfo.loadLabel(packageManager).toString() + val uid = applicationInfo.uid val signature = getSignature(packageInfo) - val requestedPermissions = packageInfo.requestedPermissions - val permissionFlags = packageInfo.requestedPermissionsFlags - val activePermissions = mutableSetOf() - requestedPermissions?.forEachIndexed { index, permission -> - if (permissionFlags[index] and REQUESTED_PERMISSION_GRANTED != 0) { - activePermissions += permission - } - } + val requestedPermissions = packageInfo.requestedPermissions?.asSequence().orEmpty() + val permissionFlags = packageInfo.requestedPermissionsFlags?.asSequence().orEmpty() + val activePermissions = (requestedPermissions zip permissionFlags) + .filter { (_, flag) -> flag and REQUESTED_PERMISSION_GRANTED != 0 } + .mapTo(mutableSetOf()) { (permission, _) -> permission } - return CallerPackageInfo(appName, callingPackage, uid, signature, activePermissions.toSet()) + return CallerPackageInfo(appName, callingPackage, uid, signature, activePermissions) } /** @@ -188,15 +186,16 @@ internal class PackageValidator(context: Context) { * returns `null` as the signature. */ @Suppress("deprecation") - private fun getSignature(packageInfo: PackageInfo): String? = - if (packageInfo.signatures == null || packageInfo.signatures.size != 1) { + private fun getSignature(packageInfo: PackageInfo): String? { + val signatures = packageInfo.signatures + return if (signatures == null || signatures.size != 1) { // Security best practices dictate that an app should be signed with exactly one (1) // signature. Because of this, if there are multiple signatures, reject it. null } else { - val certificate = packageInfo.signatures[0].toByteArray() - getSignatureSha256(certificate) + getSignatureSha256(signatures[0].toByteArray()) } + } /** * Finds the Android platform signing key signature. This key is never null.