Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 16f2af25 authored by Sumedh Sen's avatar Sumedh Sen
Browse files

[piav2] Ensure correct originatingUid is set while installing

Intent sent to PIA wont always contain the ORIGINATING_UID as an extra.
Use the originatingUid Pia computes in the sessionparams

Bug: 329742445
Test: atest CtsPackageInstallTestCases:IntentTest

Change-Id: Id86106cae12de02b867d9b6f4a12ac8b3fed54c2
parent bdcfbfd9
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -95,6 +95,7 @@ class InstallRepository(private val context: Context) {
    var stagedSessionId = SessionInfo.INVALID_ID
        private set
    private var callingUid = Process.INVALID_UID
    private var originatingUid = Process.INVALID_UID
    private var callingPackage: String? = null
    private var sessionStager: SessionStager? = null
    private lateinit var intent: Intent
@@ -147,7 +148,7 @@ class InstallRepository(private val context: Context) {
        }
        val sourceInfo: ApplicationInfo? = getSourceInfo(callingPackage)
        // Uid of the source package, with a preference to uid from ApplicationInfo
        val originatingUid = sourceInfo?.uid ?: callingUid
        originatingUid = sourceInfo?.uid ?: callingUid
        appOpRequestInfo = AppOpRequestInfo(
            getPackageNameForUid(context, originatingUid, callingPackage),
            originatingUid, callingAttributionTag
@@ -281,7 +282,7 @@ class InstallRepository(private val context: Context) {
                    context.contentResolver.openAssetFileDescriptor(uri, "r").use { afd ->
                        val pfd: ParcelFileDescriptor? = afd?.parcelFileDescriptor
                        val params: SessionParams =
                            createSessionParams(intent, pfd, uri.toString())
                            createSessionParams(originatingUid, intent, pfd, uri.toString())
                        stagedSessionId = packageInstaller.createSession(params)
                    }
                } catch (e: Exception) {
@@ -337,6 +338,7 @@ class InstallRepository(private val context: Context) {
    }

    private fun createSessionParams(
        originatingUid: Int,
        intent: Intent,
        pfd: ParcelFileDescriptor?,
        debugPathName: String,
@@ -353,9 +355,7 @@ class InstallRepository(private val context: Context) {
        params.setOriginatingUri(
            intent.getParcelableExtra(Intent.EXTRA_ORIGINATING_URI, Uri::class.java)
        )
        params.setOriginatingUid(
            intent.getIntExtra(Intent.EXTRA_ORIGINATING_UID, Process.INVALID_UID)
        )
        params.setOriginatingUid(originatingUid)
        params.setInstallerPackageName(intent.getStringExtra(Intent.EXTRA_INSTALLER_PACKAGE_NAME))
        params.setInstallReason(PackageManager.INSTALL_REASON_USER)
        // Disable full screen intent usage by for sideloads.