Skip to content

Commit 2deaa36

Browse files
rich canningsAndroid (Google) Code Review
authored andcommitted
Merge "Add permission checks for Verification API calls" into jb-mr1-dev
2 parents b1a1e5c + 7e67151 commit 2deaa36

File tree

4 files changed

+15
-2
lines changed

4 files changed

+15
-2
lines changed

api/current.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ package android {
7676
field public static final java.lang.String MOUNT_UNMOUNT_FILESYSTEMS = "android.permission.MOUNT_UNMOUNT_FILESYSTEMS";
7777
field public static final java.lang.String NET_TUNNELING = "android.permission.NET_TUNNELING";
7878
field public static final java.lang.String NFC = "android.permission.NFC";
79+
field public static final java.lang.String PACKAGE_VERIFICATION_AGENT = "android.permission.PACKAGE_VERIFICATION_AGENT";
7980
field public static final deprecated java.lang.String PERSISTENT_ACTIVITY = "android.permission.PERSISTENT_ACTIVITY";
8081
field public static final java.lang.String PROCESS_OUTGOING_CALLS = "android.permission.PROCESS_OUTGOING_CALLS";
8182
field public static final java.lang.String READ_CALENDAR = "android.permission.READ_CALENDAR";

core/java/android/content/pm/PackageManager.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2319,6 +2319,9 @@ public abstract int installExistingPackage(String packageName)
23192319
* {@link PackageManager#EXTRA_VERIFICATION_ID} Intent extra
23202320
* @param verificationCode either {@link PackageManager#VERIFICATION_ALLOW}
23212321
* or {@link PackageManager#VERIFICATION_REJECT}.
2322+
* @throws SecurityException if the caller does not have the
2323+
* {@link android.Manifest.permission#PACKAGE_VERIFICATION_AGENT}
2324+
* permission.
23222325
*/
23232326
public abstract void verifyPendingInstall(int id, int verificationCode);
23242327

@@ -2342,9 +2345,11 @@ public abstract int installExistingPackage(String packageName)
23422345
* @param millisecondsToDelay the amount of time requested for the timeout.
23432346
* Must be positive and less than
23442347
* {@link PackageManager#MAXIMUM_VERIFICATION_TIMEOUT}.
2345-
*
23462348
* @throws IllegalArgumentException if {@code millisecondsToDelay} is out
23472349
* of bounds or {@code verificationCodeAtTimeout} is unknown.
2350+
* @throws SecurityException if the caller does not have the
2351+
* {@link android.Manifest.permission#PACKAGE_VERIFICATION_AGENT}
2352+
* permission.
23482353
*/
23492354
public abstract void extendVerificationTimeout(int id,
23502355
int verificationCodeAtTimeout, long millisecondsToDelay);

core/res/AndroidManifest.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1662,7 +1662,6 @@
16621662

16631663
<!-- Package verifier needs to have this permission before the PackageManager will
16641664
trust it to verify packages.
1665-
@hide
16661665
-->
16671666
<permission android:name="android.permission.PACKAGE_VERIFICATION_AGENT"
16681667
android:label="@string/permlab_packageVerificationAgent"

services/java/com/android/server/pm/PackageManagerService.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5578,6 +5578,10 @@ public int installExistingPackage(String packageName) {
55785578

55795579
@Override
55805580
public void verifyPendingInstall(int id, int verificationCode) throws RemoteException {
5581+
mContext.enforceCallingOrSelfPermission(
5582+
android.Manifest.permission.PACKAGE_VERIFICATION_AGENT,
5583+
"Only package verification agents can verify applications");
5584+
55815585
final Message msg = mHandler.obtainMessage(PACKAGE_VERIFIED);
55825586
final PackageVerificationResponse response = new PackageVerificationResponse(
55835587
verificationCode, Binder.getCallingUid());
@@ -5589,6 +5593,10 @@ public void verifyPendingInstall(int id, int verificationCode) throws RemoteExce
55895593
@Override
55905594
public void extendVerificationTimeout(int id, int verificationCodeAtTimeout,
55915595
long millisecondsToDelay) {
5596+
mContext.enforceCallingOrSelfPermission(
5597+
android.Manifest.permission.PACKAGE_VERIFICATION_AGENT,
5598+
"Only package verification agents can extend verification timeouts");
5599+
55925600
final PackageVerificationState state = mPendingVerification.get(id);
55935601
final PackageVerificationResponse response = new PackageVerificationResponse(
55945602
verificationCodeAtTimeout, Binder.getCallingUid());

0 commit comments

Comments
 (0)