From 02708b1ac41e12029b806085f8ff76a0e2c916b5 Mon Sep 17 00:00:00 2001 From: Jeremie GARCIA Date: Thu, 5 Nov 2015 18:27:59 +0100 Subject: [PATCH] Parse "vendor/priv-app" to find privileged applications Change-Id: Icbbafba96b7880f51ca3afcee53d5f3dd5b86a45 Signed-off-by: Jeremie GARCIA Signed-off-by: Zhiquan Liu Bug: 29488499 --- .../android/server/pm/PackageManagerService.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index ada0a6be98df7..2986a129dd556 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -2446,8 +2446,14 @@ public class PackageManagerService extends IPackageManager.Stub { | PackageParser.PARSE_IS_SYSTEM | PackageParser.PARSE_IS_SYSTEM_DIR, scanFlags, 0); + // Collected privileged vendor packages. + final File privilegedVendorAppDir = new File(Environment.getVendorDirectory(), "priv-app"); + scanDirLI(privilegedVendorAppDir, PackageParser.PARSE_IS_SYSTEM + | PackageParser.PARSE_IS_SYSTEM_DIR + | PackageParser.PARSE_IS_PRIVILEGED, scanFlags, 0); + // Collect all vendor packages. - File vendorAppDir = new File("/vendor/app"); + File vendorAppDir = new File(Environment.getVendorDirectory(), "app"); try { vendorAppDir = vendorAppDir.getCanonicalFile(); } catch (IOException e) { @@ -15814,7 +15820,10 @@ public class PackageManagerService extends IPackageManager.Stub { try { final String privilegedAppDir = new File(Environment.getRootDirectory(), "priv-app") .getCanonicalPath(); - return path.getCanonicalPath().startsWith(privilegedAppDir); + final String privilegedAppVendorDir = new File(Environment.getVendorDirectory(), "priv-app") + .getCanonicalPath(); + return (path.getCanonicalPath().startsWith(privilegedAppDir) + || path.getCanonicalPath().startsWith(privilegedAppVendorDir)); } catch (IOException e) { Slog.e(TAG, "Unable to access code path " + path); }