Merge "Add context UID to package-name-based permission query" into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
ac3c969069
@@ -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
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user