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

Commit 0ea2e5dc authored by Alex Buynytskyy's avatar Alex Buynytskyy
Browse files

Don't allow verifiers to extend the timeout.

For streaming installations only.
Can't change for the existing code without risking breaking it.

Bug: 208096588
Test: atest PackageManagerShellCommandTest
Change-Id: I2d401487a8d21954f80eaf8303d7ac8854cf73a7
parent f645f421
Loading
Loading
Loading
Loading
+22 −6
Original line number Diff line number Diff line
@@ -507,6 +507,13 @@ final class VerificationParams extends HandlerParams {
                requiredVerifierPackage, verificationTimeout,
                verifierUserId, false,
                REASON_PACKAGE_VERIFIER, "package verifier");

        if (streaming) {
            // For streaming installations, count verification timeout from the broadcast.
            startVerificationTimeoutCountdown(verificationId, streaming, response,
                    verificationTimeout);
        }

        mPm.mContext.sendOrderedBroadcastAsUser(verification, verifierUser,
                android.Manifest.permission.PACKAGE_VERIFICATION_AGENT,
                /* appOp= */ AppOpsManager.OP_NONE,
@@ -514,12 +521,12 @@ final class VerificationParams extends HandlerParams {
                new BroadcastReceiver() {
                    @Override
                    public void onReceive(Context context, Intent intent) {
                        final Message msg = mPm.mHandler
                                .obtainMessage(CHECK_PENDING_VERIFICATION);
                        msg.arg1 = verificationId;
                        msg.arg2 = streaming ? 1 : 0;
                        msg.obj = response;
                        mPm.mHandler.sendMessageDelayed(msg, verificationTimeout);
                        if (!streaming) {
                            // For NON-streaming installations, count verification timeout from
                            // the broadcast was processed by all receivers.
                            startVerificationTimeoutCountdown(verificationId, streaming, response,
                                    verificationTimeout);
                        }
                    }
                }, null, 0, null, null);

@@ -532,6 +539,15 @@ final class VerificationParams extends HandlerParams {
        mWaitForVerificationToComplete = true;
    }

    private void startVerificationTimeoutCountdown(int verificationId, boolean streaming,
            PackageVerificationResponse response, long verificationTimeout) {
        final Message msg = mPm.mHandler.obtainMessage(CHECK_PENDING_VERIFICATION);
        msg.arg1 = verificationId;
        msg.arg2 = streaming ? 1 : 0;
        msg.obj = response;
        mPm.mHandler.sendMessageDelayed(msg, verificationTimeout);
    }

    /**
     * Get the default verification agent response code.
     *