Merge "Fix auto revoke installer whitelist APIs" into rvc-dev

This commit is contained in:
Eugene Susla
2020-05-08 19:34:38 +00:00
committed by Android (Google) Code Review
2 changed files with 8 additions and 3 deletions

View File

@@ -291,6 +291,9 @@
<uses-permission android:name="android.permission.ACCESS_TV_TUNER" /> <uses-permission android:name="android.permission.ACCESS_TV_TUNER" />
<uses-permission android:name="android.permission.TUNER_RESOURCE_ACCESS" /> <uses-permission android:name="android.permission.TUNER_RESOURCE_ACCESS" />
<!-- Permissions required for CTS test - AutoRevokeTest -->
<uses-permission android:name="android.permission.WHITELIST_AUTO_REVOKE_PERMISSIONS" />
<application android:label="@string/app_label" <application android:label="@string/app_label"
android:theme="@android:style/Theme.DeviceDefault.DayNight" android:theme="@android:style/Theme.DeviceDefault.DayNight"
android:defaultToDeviceProtectedStorage="true" android:defaultToDeviceProtectedStorage="true"

View File

@@ -1289,6 +1289,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
final AndroidPackage pkg = mPackageManagerInt.getPackage(packageName); final AndroidPackage pkg = mPackageManagerInt.getPackage(packageName);
final int callingUid = Binder.getCallingUid(); final int callingUid = Binder.getCallingUid();
final int packageUid = UserHandle.getUid(userId, pkg.getUid());
if (!checkAutoRevokeAccess(pkg, callingUid)) { if (!checkAutoRevokeAccess(pkg, callingUid)) {
return false; return false;
@@ -1296,7 +1297,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
if (mAppOpsManager if (mAppOpsManager
.checkOpNoThrow(AppOpsManager.OP_AUTO_REVOKE_MANAGED_BY_INSTALLER, .checkOpNoThrow(AppOpsManager.OP_AUTO_REVOKE_MANAGED_BY_INSTALLER,
callingUid, packageName) packageUid, packageName)
!= MODE_ALLOWED) { != MODE_ALLOWED) {
// Whitelist user set - don't override // Whitelist user set - don't override
return false; return false;
@@ -1305,7 +1306,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
final long identity = Binder.clearCallingIdentity(); final long identity = Binder.clearCallingIdentity();
try { try {
mAppOpsManager.setMode(AppOpsManager.OP_AUTO_REVOKE_PERMISSIONS_IF_UNUSED, mAppOpsManager.setMode(AppOpsManager.OP_AUTO_REVOKE_PERMISSIONS_IF_UNUSED,
callingUid, packageName, packageUid, packageName,
whitelisted ? MODE_IGNORED : MODE_ALLOWED); whitelisted ? MODE_IGNORED : MODE_ALLOWED);
} finally { } finally {
Binder.restoreCallingIdentity(identity); Binder.restoreCallingIdentity(identity);
@@ -1338,6 +1339,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
final AndroidPackage pkg = mPackageManagerInt.getPackage(packageName); final AndroidPackage pkg = mPackageManagerInt.getPackage(packageName);
final int callingUid = Binder.getCallingUid(); final int callingUid = Binder.getCallingUid();
final int packageUid = UserHandle.getUid(userId, pkg.getUid());
if (!checkAutoRevokeAccess(pkg, callingUid)) { if (!checkAutoRevokeAccess(pkg, callingUid)) {
return false; return false;
@@ -1346,7 +1348,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
final long identity = Binder.clearCallingIdentity(); final long identity = Binder.clearCallingIdentity();
try { try {
return mAppOpsManager.checkOpNoThrow( return mAppOpsManager.checkOpNoThrow(
AppOpsManager.OP_AUTO_REVOKE_PERMISSIONS_IF_UNUSED, callingUid, packageName) AppOpsManager.OP_AUTO_REVOKE_PERMISSIONS_IF_UNUSED, packageUid, packageName)
== MODE_IGNORED; == MODE_IGNORED;
} finally { } finally {
Binder.restoreCallingIdentity(identity); Binder.restoreCallingIdentity(identity);