@@ -147,18 +147,15 @@ internal class PackageValidator(context: Context) {
147147 private fun buildCallerInfo (callingPackage : String ): CallerPackageInfo ? {
148148 val packageInfo = getPackageInfo(callingPackage) ? : return null
149149
150- val appName = packageInfo.applicationInfo.loadLabel(packageManager).toString()
151- val uid = packageInfo.applicationInfo.uid
150+ val appName = packageInfo.applicationInfo? .loadLabel(packageManager).toString()
151+ val uid = packageInfo.applicationInfo? .uid ? : - 1
152152 val signature = getSignature(packageInfo)
153153
154- val requestedPermissions = packageInfo.requestedPermissions
155- val permissionFlags = packageInfo.requestedPermissionsFlags
156- val activePermissions = mutableSetOf<String >()
157- requestedPermissions?.forEachIndexed { index, permission ->
158- if (permissionFlags[index] and REQUESTED_PERMISSION_GRANTED != 0 ) {
159- activePermissions + = permission
160- }
161- }
154+ val requestedPermissions = packageInfo.requestedPermissions?.asSequence().orEmpty()
155+ val permissionFlags = packageInfo.requestedPermissionsFlags?.asSequence().orEmpty()
156+ val activePermissions = (requestedPermissions zip permissionFlags)
157+ .filter { (permission, flag) -> flag and REQUESTED_PERMISSION_GRANTED != 0 }
158+ .mapTo(mutableSetOf ()) { (permission, flag) -> permission }
162159
163160 return CallerPackageInfo (appName, callingPackage, uid, signature, activePermissions.toSet())
164161 }
@@ -189,12 +186,12 @@ internal class PackageValidator(context: Context) {
189186 */
190187 @Suppress(" deprecation" )
191188 private fun getSignature (packageInfo : PackageInfo ): String? =
192- if (packageInfo.signatures == null || packageInfo.signatures.size != 1 ) {
189+ if (packageInfo.signatures == null || packageInfo.signatures!! .size != 1 ) {
193190 // Security best practices dictate that an app should be signed with exactly one (1)
194191 // signature. Because of this, if there are multiple signatures, reject it.
195192 null
196193 } else {
197- val certificate = packageInfo.signatures[0 ].toByteArray()
194+ val certificate = packageInfo.signatures!! [0 ].toByteArray()
198195 getSignatureSha256(certificate)
199196 }
200197
0 commit comments