OSDN Git Service

Change prefix based upon mask
authorTodd Kennedy <toddke@google.com>
Tue, 21 Jun 2016 16:42:08 +0000 (09:42 -0700)
committerTodd Kennedy <toddke@google.com>
Tue, 21 Jun 2016 16:42:08 +0000 (09:42 -0700)
The mask may not be all F's.

Change-Id: I50ff4e4fb95af2037b84a1531b60dd9c0986bf86

core/java/android/content/pm/EphemeralResolveInfo.java
services/core/java/com/android/server/pm/PackageManagerService.java

index 92d7945..fc3b958 100644 (file)
@@ -53,7 +53,7 @@ public final class EphemeralResolveInfo implements Parcelable {
             throw new IllegalArgumentException();
         }
 
-        mDigest = new EphemeralDigest(uri, -1);
+        mDigest = new EphemeralDigest(uri, 0xFFFFFFFF, -1);
         mFilters.addAll(filters);
         mPackageName = packageName;
     }
@@ -135,7 +135,7 @@ public final class EphemeralResolveInfo implements Parcelable {
         /** The first 4 bytes of the domain hashes */
         private final int[] mDigestPrefix;
 
-        public EphemeralDigest(@NonNull Uri uri, int maxDigests) {
+        public EphemeralDigest(@NonNull Uri uri, int digestMask, int maxDigests) {
             if (uri == null) {
                 throw new IllegalArgumentException();
             }
@@ -143,10 +143,11 @@ public final class EphemeralResolveInfo implements Parcelable {
             mDigestPrefix = new int[mDigestBytes.length];
             for (int i = 0; i < mDigestBytes.length; i++) {
                 mDigestPrefix[i] =
-                        (mDigestBytes[i][0] & 0xFF) << 24
-                        | (mDigestBytes[i][1] & 0xFF) << 16
-                        | (mDigestBytes[i][2] & 0xFF) << 8
-                        | (mDigestBytes[i][3] & 0xFF) << 0;
+                        ((mDigestBytes[i][0] & 0xFF) << 24
+                                | (mDigestBytes[i][1] & 0xFF) << 16
+                                | (mDigestBytes[i][2] & 0xFF) << 8
+                                | (mDigestBytes[i][3] & 0xFF) << 0)
+                        & digestMask;
             }
         }
 
index c3934a7..c627ff0 100644 (file)
@@ -5006,7 +5006,8 @@ public class PackageManagerService extends IPackageManager.Stub {
                 Global.EPHEMERAL_HASH_PREFIX_MASK, DEFAULT_EPHEMERAL_HASH_PREFIX_MASK);
         final int ephemeralPrefixCount = Global.getInt(mContext.getContentResolver(),
                 Global.EPHEMERAL_HASH_PREFIX_COUNT, DEFAULT_EPHEMERAL_HASH_PREFIX_COUNT);
-        final EphemeralDigest digest = new EphemeralDigest(intent.getData(), ephemeralPrefixCount);
+        final EphemeralDigest digest = new EphemeralDigest(intent.getData(), ephemeralPrefixMask,
+                ephemeralPrefixCount);
         final int[] shaPrefix = digest.getDigestPrefix();
         final byte[][] digestBytes = digest.getDigestBytes();
         final List<EphemeralResolveInfo> ephemeralResolveInfoList =