Merge "Add context UID to package-name-based permission query" into rvc-dev

This commit is contained in:
Daniel Colascione
2020-02-27 17:52:24 +00:00
committed by Android (Google) Code Review
2 changed files with 17 additions and 11 deletions

View File

@@ -675,7 +675,7 @@ public class ApplicationPackageManager extends PackageManager {
@Override
public int checkPermission(String permName, String pkgName) {
return PermissionManager
.checkPackageNamePermission(permName, pkgName);
.checkPackageNamePermission(permName, pkgName, getUserId());
}
@Override

View File

@@ -561,21 +561,24 @@ public final class PermissionManager {
private static final class PackageNamePermissionQuery {
final String permName;
final String pkgName;
final int uid;
PackageNamePermissionQuery(@Nullable String permName, @Nullable String pkgName) {
PackageNamePermissionQuery(@Nullable String permName, @Nullable String pkgName, int uid) {
this.permName = permName;
this.pkgName = pkgName;
this.uid = uid;
}
@Override
public String toString() {
return String.format("PackageNamePermissionQuery(pkgName=\"%s\", permName=\"%s\")",
pkgName, permName);
return String.format(
"PackageNamePermissionQuery(pkgName=\"%s\", permName=\"%s, uid=%s\")",
pkgName, permName, uid);
}
@Override
public int hashCode() {
return Objects.hashCode(permName) * 13 + Objects.hashCode(pkgName);
return Objects.hash(permName, pkgName, uid);
}
@Override
@@ -590,15 +593,17 @@ public final class PermissionManager {
return false;
}
return Objects.equals(permName, other.permName)
&& Objects.equals(pkgName, other.pkgName);
&& Objects.equals(pkgName, other.pkgName)
&& uid == other.uid;
}
}
/* @hide */
private static int checkPackageNamePermissionUncached(String permName, String pkgName) {
private static int checkPackageNamePermissionUncached(
String permName, String pkgName, int uid) {
try {
return ActivityThread.getPermissionManager().checkPermission(
permName, pkgName, UserHandle.myUserId());
permName, pkgName, uid);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -611,7 +616,8 @@ public final class PermissionManager {
16, CACHE_KEY_PACKAGE_INFO) {
@Override
protected Integer recompute(PackageNamePermissionQuery query) {
return checkPackageNamePermissionUncached(query.permName, query.pkgName);
return checkPackageNamePermissionUncached(
query.permName, query.pkgName, query.uid);
}
};
@@ -620,9 +626,9 @@ public final class PermissionManager {
*
* @hide
*/
public static int checkPackageNamePermission(String permName, String pkgName) {
public static int checkPackageNamePermission(String permName, String pkgName, int uid) {
return sPackageNamePermissionCache.query(
new PackageNamePermissionQuery(permName, pkgName));
new PackageNamePermissionQuery(permName, pkgName, uid));
}
/**