Merge "[MTE] Allow devices to disable MTE DPM API"

This commit is contained in:
Florian Mayer
2023-01-31 17:00:17 +00:00
committed by Android (Google) Code Review
2 changed files with 12 additions and 0 deletions

View File

@@ -3961,6 +3961,7 @@ public class DevicePolicyManager {
*
* @throws SecurityException if caller is not device owner or profile owner of org-owned device
* or if called on a parent instance
* @throws UnsupportedOperationException if the device does not support MTE
* @param policy the MTE policy to be set
*/
public void setMtePolicy(@MtePolicy int policy) {

View File

@@ -20254,6 +20254,17 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
DevicePolicyManager.MTE_ENABLED);
Preconditions.checkArgument(
allowedModes.contains(flags), "Provided mode is not one of the allowed values.");
// In general, this API should be available when "bootctl_settings_toggle" is set, which
// signals that there is a control for MTE in the user settings and this API fundamentally
// is a way for the device admin to override that setting.
// Allow bootctl_device_policy_manager as an override, e.g. to offer the
// DevicePolicyManager only without a visible user setting.
if (!mInjector.systemPropertiesGetBoolean(
"ro.arm64.memtag.bootctl_device_policy_manager",
mInjector.systemPropertiesGetBoolean(
"ro.arm64.memtag.bootctl_settings_toggle", false))) {
throw new UnsupportedOperationException("device does not support MTE");
}
final CallerIdentity caller = getCallerIdentity();
if (flags == DevicePolicyManager.MTE_DISABLED) {
Preconditions.checkCallAuthorization(isDefaultDeviceOwner(caller));