Merge "APK still has privileged flag after being moved from "/system/priv-app"" into lmp-mr1-dev

This commit is contained in:
Jeff Sharkey
2014-12-01 18:56:55 +00:00
committed by Android (Google) Code Review

View File

@@ -4285,6 +4285,14 @@ public class PackageManagerService extends IPackageManager.Stub {
boolean updatedPkgBetter = false;
// First check if this is a system package that may involve an update
if (updatedPkg != null && (parseFlags&PackageParser.PARSE_IS_SYSTEM) != 0) {
// If new package is not located in "/system/priv-app" (e.g. due to an OTA),
// it needs to drop FLAG_PRIVILEGED.
if (locationIsPrivileged(scanFile)) {
updatedPkg.pkgFlags |= ApplicationInfo.FLAG_PRIVILEGED;
} else {
updatedPkg.pkgFlags &= ~ApplicationInfo.FLAG_PRIVILEGED;
}
if (ps != null && !ps.codePath.equals(scanFile)) {
// The path has changed from what was last scanned... check the
// version of the new path against what we have stored to determine
@@ -4302,12 +4310,6 @@ public class PackageManagerService extends IPackageManager.Stub {
+ " to " + scanFile);
updatedPkg.codePath = scanFile;
updatedPkg.codePathString = scanFile.toString();
// This is the point at which we know that the system-disk APK
// for this package has moved during a reboot (e.g. due to an OTA),
// so we need to reevaluate it for privilege policy.
if (locationIsPrivileged(scanFile)) {
updatedPkg.pkgFlags |= ApplicationInfo.FLAG_PRIVILEGED;
}
}
updatedPkg.pkg = pkg;
throw new PackageManagerException(INSTALL_FAILED_DUPLICATE_PACKAGE, null);
@@ -7202,7 +7204,9 @@ public class PackageManagerService extends IPackageManager.Stub {
// If the original was granted this permission, we take
// that grant decision as read and propagate it to the
// update.
allowed = true;
if (sysPs.isPrivileged()) {
allowed = true;
}
} else {
// The system apk may have been updated with an older
// version of the one on the data partition, but which