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

Commit 24713907 authored by rich cannings's avatar rich cannings
Browse files

Pass URLs to package verifiers

This change passes the originating URL and accompanied referrer to
package verifiers, when available.

Bug: 6544677
Change-Id: If9ff6663ad7f3426b7aea2aceb1413b689788138
parent 26ea2e5d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -5825,7 +5825,7 @@ package android.content {
    field public static final java.lang.String EXTRA_KEY_EVENT = "android.intent.extra.KEY_EVENT";
    field public static final java.lang.String EXTRA_LOCAL_ONLY = "android.intent.extra.LOCAL_ONLY";
    field public static final java.lang.String EXTRA_NOT_UNKNOWN_SOURCE = "android.intent.extra.NOT_UNKNOWN_SOURCE";
    field public static final java.lang.String EXTRA_ORIGINATING_URL = "android.intent.extra.ORIGINATING_URL";
    field public static final java.lang.String EXTRA_ORIGINATING_URI = "android.intent.extra.ORIGINATING_URI";
    field public static final java.lang.String EXTRA_PHONE_NUMBER = "android.intent.extra.PHONE_NUMBER";
    field public static final java.lang.String EXTRA_REFERRER = "android.intent.extra.REFERRER";
    field public static final java.lang.String EXTRA_REMOTE_INTENT_TOKEN = "android.intent.extra.remote_intent_token";
+18 −2
Original line number Diff line number Diff line
@@ -782,6 +782,7 @@ public final class Pm {
        String macAlgo = null;
        byte[] macKey = null;
        byte[] tag = null;
        String referrer = null;

        while ((opt=nextOption()) != null) {
            if (opt.equals("-l")) {
@@ -845,6 +846,13 @@ public final class Pm {
                    showUsage();
                    return;
                }
            } else if (opt.equals("--referrer")) {
                referrer = nextOptionData();
                if (referrer == null) {
                    System.err.println("Error: must supply argument for --referrer");
                    showUsage();
                    return;
                }
            } else {
                System.err.println("Error: Unknown option: " + opt);
                showUsage();
@@ -892,6 +900,13 @@ public final class Pm {

        final Uri apkURI;
        final Uri verificationURI;
        final Uri referrerURI;

        if (referrer != null) {
            referrerURI = Uri.parse(referrer);
        } else {
            referrerURI = null;
        }

        // Populate apkURI, must be present
        final String apkFilePath = nextArg();
@@ -916,7 +931,7 @@ public final class Pm {
        PackageInstallObserver obs = new PackageInstallObserver();
        try {
            mPm.installPackageWithVerification(apkURI, obs, installFlags, installerPackageName,
                    verificationURI, null, encryptionParams);
                    verificationURI, null, encryptionParams, apkURI, referrerURI);

            synchronized (obs) {
                while (!obs.finished) {
@@ -1436,7 +1451,8 @@ public final class Pm {
        System.err.println("       pm list libraries");
        System.err.println("       pm path PACKAGE");
        System.err.println("       pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] [-s] [-f]");
        System.err.println("                  [--algo <algorithm name> --key <key-in-hex> --iv <IV-in-hex>] PATH");
        System.err.println("                  [--algo <algorithm name> --key <key-in-hex> --iv <IV-in-hex>]");
        System.err.println("                  [--referrer <URI>] PATH");
        System.err.println("       pm uninstall [-k] PACKAGE");
        System.err.println("       pm clear PACKAGE");
        System.err.println("       pm enable PACKAGE_OR_COMPONENT");
+14 −2
Original line number Diff line number Diff line
@@ -971,13 +971,25 @@ final class ApplicationPackageManager extends PackageManager {
        }
    }

    @Override
    public void installPackageWithOrigin(Uri packageURI, IPackageInstallObserver observer,
            int flags, String installerPackageName, Uri originatingURI, Uri referrer) {
        try {
            mPM.installPackageWithOrigin(packageURI, observer, flags, null, originatingURI,
                    referrer);
        } catch (RemoteException e) {
            // Should never happen!
        }
    }

    @Override
    public void installPackageWithVerification(Uri packageURI, IPackageInstallObserver observer,
            int flags, String installerPackageName, Uri verificationURI,
            ManifestDigest manifestDigest, ContainerEncryptionParams encryptionParams) {
            ManifestDigest manifestDigest, ContainerEncryptionParams encryptionParams,
            Uri originatingURI, Uri referrer) {
        try {
            mPM.installPackageWithVerification(packageURI, observer, flags, installerPackageName,
                    verificationURI, manifestDigest, encryptionParams);
                    verificationURI, manifestDigest, encryptionParams, originatingURI, referrer);
        } catch (RemoteException e) {
            // Should never happen!
        }
+8 −8
Original line number Diff line number Diff line
@@ -571,7 +571,7 @@ import java.util.Set;
 *     <li> {@link #EXTRA_INITIAL_INTENTS}
 *     <li> {@link #EXTRA_INTENT}
 *     <li> {@link #EXTRA_KEY_EVENT}
 *     <li> {@link #EXTRA_ORIGINATING_URL}
 *     <li> {@link #EXTRA_ORIGINATING_URI}
 *     <li> {@link #EXTRA_PHONE_NUMBER}
 *     <li> {@link #EXTRA_REFERRER}
 *     <li> {@link #EXTRA_REMOTE_INTENT_TOKEN}
@@ -1288,17 +1288,17 @@ public class Intent implements Parcelable, Cloneable {
            = "android.intent.extra.NOT_UNKNOWN_SOURCE";

    /**
     * Used as a string extra field with {@link #ACTION_INSTALL_PACKAGE} and
     * {@link #ACTION_VIEW} to indicate the URL from which the local APK in the Intent
     * Used as a URI extra field with {@link #ACTION_INSTALL_PACKAGE} and
     * {@link #ACTION_VIEW} to indicate the URI from which the local APK in the Intent
     * data field originated from.
     */
    public static final String EXTRA_ORIGINATING_URL
            = "android.intent.extra.ORIGINATING_URL";
    public static final String EXTRA_ORIGINATING_URI
            = "android.intent.extra.ORIGINATING_URI";

    /**
     * Used as a string extra field with {@link #ACTION_INSTALL_PACKAGE} and
     * {@link #ACTION_VIEW} to indicate the HTTP referrer associated with the Intent
     * data field or {@link #EXTRA_ORIGINATING_URL}.
     * Used as a URI extra field with {@link #ACTION_INSTALL_PACKAGE} and
     * {@link #ACTION_VIEW} to indicate the HTTP referrer URI associated with the Intent
     * data field or {@link #EXTRA_ORIGINATING_URI}.
     */
    public static final String EXTRA_REFERRER
            = "android.intent.extra.REFERRER";
+7 −2
Original line number Diff line number Diff line
@@ -363,9 +363,14 @@ interface IPackageManager {
    void setUserName(int userId, String name);
    ParcelFileDescriptor setUserIcon(int userId);

    void installPackageWithOrigin(in Uri packageURI, in IPackageInstallObserver observer,
            int flags, in String installerPackageName, in Uri originatingURI,
            in Uri referrer);

    void installPackageWithVerification(in Uri packageURI, in IPackageInstallObserver observer,
            int flags, in String installerPackageName, in Uri verificationURI,
            in ManifestDigest manifestDigest, in ContainerEncryptionParams encryptionParams);
            in ManifestDigest manifestDigest, in ContainerEncryptionParams encryptionParams,
            in Uri originatingURI, in Uri referrer);

    void verifyPendingInstall(int id, int verificationCode);

Loading