summaryrefslogtreecommitdiffstats
path: root/src/com/android/packageinstaller/InstallStart.java
diff options
context:
space:
mode:
authorSuprabh Shukla <suprabh@google.com>2017-04-26 14:41:24 -0700
committerSuprabh Shukla <suprabh@google.com>2017-04-26 15:08:11 -0700
commit56a3c70d9c3745067d52908d097e23137506679d (patch)
tree7c697b5ba867e6a6fb029a78d63d5960455ca5b5 /src/com/android/packageinstaller/InstallStart.java
parentef54ec214414fa17bc2ada601fc2284d00b3804d (diff)
downloadandroid_packages_apps_PackageInstaller-56a3c70d9c3745067d52908d097e23137506679d.tar.gz
android_packages_apps_PackageInstaller-56a3c70d9c3745067d52908d097e23137506679d.tar.bz2
android_packages_apps_PackageInstaller-56a3c70d9c3745067d52908d097e23137506679d.zip
Exempting privileged apps from permission check in package installer
If a privileged app does want to be treated as a trusted source, it can pass in the extra EXTRA_NOT_UNKNOWN_SOURCE and does not need to declare the permission REQUEST_INSTALL_PACKAGES. In such a case it will not be shown in the list under settings to the user. Test: Manually tested that sync auth successfully installs dpc during profile provisioning flow Bug: 37623444 Change-Id: I70083980f3b8e43de78d2f1a781d55e19fdc00ee
Diffstat (limited to 'src/com/android/packageinstaller/InstallStart.java')
-rw-r--r--src/com/android/packageinstaller/InstallStart.java9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/com/android/packageinstaller/InstallStart.java b/src/com/android/packageinstaller/InstallStart.java
index 36161636..80691f28 100644
--- a/src/com/android/packageinstaller/InstallStart.java
+++ b/src/com/android/packageinstaller/InstallStart.java
@@ -64,10 +64,15 @@ public class InstallStart extends Activity {
callingPackage = (sessionInfo != null) ? sessionInfo.getInstallerPackageName() : null;
}
- ApplicationInfo sourceInfo = getSourceInfo(callingPackage);
+ final ApplicationInfo sourceInfo = getSourceInfo(callingPackage);
final int originatingUid = getOriginatingUid(sourceInfo);
+ boolean isTrustedSource = false;
+ if (sourceInfo != null
+ && (sourceInfo.privateFlags & ApplicationInfo.PRIVATE_FLAG_PRIVILEGED) != 0) {
+ isTrustedSource = intent.getBooleanExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, false);
+ }
- if (originatingUid != PackageInstaller.SessionParams.UID_UNKNOWN) {
+ if (!isTrustedSource && originatingUid != PackageInstaller.SessionParams.UID_UNKNOWN) {
final int targetSdkVersion = getMaxTargetSdkVersionForUid(originatingUid);
if (targetSdkVersion < 0) {
Log.w(LOG_TAG, "Cannot get target sdk version for uid " + originatingUid);