summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--api/current.txt1
-rw-r--r--core/java/android/content/pm/PackageManager.java7
-rw-r--r--core/res/AndroidManifest.xml1
-rw-r--r--services/java/com/android/server/pm/PackageManagerService.java8
4 files changed, 15 insertions, 2 deletions
diff --git a/api/current.txt b/api/current.txt
index 720681a..e8c030a 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -76,6 +76,7 @@ package android {
field public static final java.lang.String MOUNT_UNMOUNT_FILESYSTEMS = "android.permission.MOUNT_UNMOUNT_FILESYSTEMS";
field public static final java.lang.String NET_TUNNELING = "android.permission.NET_TUNNELING";
field public static final java.lang.String NFC = "android.permission.NFC";
+ field public static final java.lang.String PACKAGE_VERIFICATION_AGENT = "android.permission.PACKAGE_VERIFICATION_AGENT";
field public static final deprecated java.lang.String PERSISTENT_ACTIVITY = "android.permission.PERSISTENT_ACTIVITY";
field public static final java.lang.String PROCESS_OUTGOING_CALLS = "android.permission.PROCESS_OUTGOING_CALLS";
field public static final java.lang.String READ_CALENDAR = "android.permission.READ_CALENDAR";
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index 0d99d3f..0aa094f 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -2319,6 +2319,9 @@ public abstract class PackageManager {
* {@link PackageManager#EXTRA_VERIFICATION_ID} Intent extra
* @param verificationCode either {@link PackageManager#VERIFICATION_ALLOW}
* or {@link PackageManager#VERIFICATION_REJECT}.
+ * @throws SecurityException if the caller does not have the
+ * {@link android.Manifest.permission#PACKAGE_VERIFICATION_AGENT}
+ * permission.
*/
public abstract void verifyPendingInstall(int id, int verificationCode);
@@ -2342,9 +2345,11 @@ public abstract class PackageManager {
* @param millisecondsToDelay the amount of time requested for the timeout.
* Must be positive and less than
* {@link PackageManager#MAXIMUM_VERIFICATION_TIMEOUT}.
- *
* @throws IllegalArgumentException if {@code millisecondsToDelay} is out
* of bounds or {@code verificationCodeAtTimeout} is unknown.
+ * @throws SecurityException if the caller does not have the
+ * {@link android.Manifest.permission#PACKAGE_VERIFICATION_AGENT}
+ * permission.
*/
public abstract void extendVerificationTimeout(int id,
int verificationCodeAtTimeout, long millisecondsToDelay);
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 1c9b440..5829787 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -1662,7 +1662,6 @@
<!-- Package verifier needs to have this permission before the PackageManager will
trust it to verify packages.
- @hide
-->
<permission android:name="android.permission.PACKAGE_VERIFICATION_AGENT"
android:label="@string/permlab_packageVerificationAgent"
diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java
index b84e25a..74b02bc 100644
--- a/services/java/com/android/server/pm/PackageManagerService.java
+++ b/services/java/com/android/server/pm/PackageManagerService.java
@@ -5531,6 +5531,10 @@ public class PackageManagerService extends IPackageManager.Stub {
@Override
public void verifyPendingInstall(int id, int verificationCode) throws RemoteException {
+ mContext.enforceCallingOrSelfPermission(
+ android.Manifest.permission.PACKAGE_VERIFICATION_AGENT,
+ "Only package verification agents can verify applications");
+
final Message msg = mHandler.obtainMessage(PACKAGE_VERIFIED);
final PackageVerificationResponse response = new PackageVerificationResponse(
verificationCode, Binder.getCallingUid());
@@ -5542,6 +5546,10 @@ public class PackageManagerService extends IPackageManager.Stub {
@Override
public void extendVerificationTimeout(int id, int verificationCodeAtTimeout,
long millisecondsToDelay) {
+ mContext.enforceCallingOrSelfPermission(
+ android.Manifest.permission.PACKAGE_VERIFICATION_AGENT,
+ "Only package verification agents can extend verification timeouts");
+
final PackageVerificationState state = mPendingVerification.get(id);
final PackageVerificationResponse response = new PackageVerificationResponse(
verificationCodeAtTimeout, Binder.getCallingUid());