Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 86a71cb4 authored by Kholoud Mohamed's avatar Kholoud Mohamed
Browse files

Enforce max size limits for policies

Bug: 324060156
Test: manually set a low limit and verified they can't be set
Change-Id: If2b82b076ac21b3f4844b14ba043014a214677a9
parent 43646396
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package android.app.admin;
import static android.app.admin.PolicyUpdateReceiver.EXTRA_ACCOUNT_TYPE;
import static android.app.admin.PolicyUpdateReceiver.EXTRA_POLICY_BUNDLE_KEY;
import static android.app.admin.PolicyUpdateReceiver.EXTRA_POLICY_KEY;
import static android.app.admin.flags.Flags.devicePolicySizeTrackingEnabled;

import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -53,6 +54,9 @@ public final class AccountTypePolicyKey extends PolicyKey {
    @TestApi
    public AccountTypePolicyKey(@NonNull String key, @NonNull String accountType) {
        super(key);
        if (devicePolicySizeTrackingEnabled()) {
            PolicySizeVerifier.enforceMaxStringLength(accountType, "accountType");
        }
        mAccountType = Objects.requireNonNull((accountType));
    }

+5 −0
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package android.app.admin;

import static android.app.admin.flags.Flags.devicePolicySizeTrackingEnabled;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.os.Bundle;
@@ -30,6 +32,9 @@ public final class BundlePolicyValue extends PolicyValue<Bundle> {

    public BundlePolicyValue(Bundle value) {
        super(value);
        if (devicePolicySizeTrackingEnabled()) {
            PolicySizeVerifier.enforceMaxParcelableFieldsLength(value);
        }
    }

    private BundlePolicyValue(Parcel source) {
+5 −0
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package android.app.admin;

import static android.app.admin.flags.Flags.devicePolicySizeTrackingEnabled;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.ComponentName;
@@ -30,6 +32,9 @@ public final class ComponentNamePolicyValue extends PolicyValue<ComponentName> {

    public ComponentNamePolicyValue(@NonNull ComponentName value) {
        super(value);
        if (devicePolicySizeTrackingEnabled()) {
            PolicySizeVerifier.enforceMaxComponentNameLength(value);
        }
    }

    private ComponentNamePolicyValue(Parcel source) {
+4 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package android.app.admin;
import static android.app.admin.PolicyUpdateReceiver.EXTRA_INTENT_FILTER;
import static android.app.admin.PolicyUpdateReceiver.EXTRA_POLICY_BUNDLE_KEY;
import static android.app.admin.PolicyUpdateReceiver.EXTRA_POLICY_KEY;
import static android.app.admin.flags.Flags.devicePolicySizeTrackingEnabled;

import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -59,6 +60,9 @@ public final class IntentFilterPolicyKey extends PolicyKey {
    @TestApi
    public IntentFilterPolicyKey(@NonNull String identifier, @NonNull IntentFilter filter) {
        super(identifier);
        if (devicePolicySizeTrackingEnabled()) {
            PolicySizeVerifier.enforceMaxParcelableFieldsLength(filter);
        }
        mFilter = Objects.requireNonNull(filter);
    }

+14 −3
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package android.app.admin;

import static android.app.admin.flags.Flags.devicePolicySizeTrackingEnabled;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
@@ -75,7 +77,7 @@ public final class LockTaskPolicy extends PolicyValue<LockTaskPolicy> {
     */
    public LockTaskPolicy(@Nullable Set<String> packages) {
        if (packages != null) {
            mPackages.addAll(packages);
            setPackagesInternal(packages);
        }
        setValue(this);
    }
@@ -93,7 +95,7 @@ public final class LockTaskPolicy extends PolicyValue<LockTaskPolicy> {
     */
    public LockTaskPolicy(@Nullable Set<String> packages, int flags) {
        if (packages != null) {
            mPackages.addAll(packages);
            setPackagesInternal(packages);
        }
        mFlags = flags;
        setValue(this);
@@ -123,7 +125,7 @@ public final class LockTaskPolicy extends PolicyValue<LockTaskPolicy> {
     */
    public void setPackages(@NonNull Set<String> packages) {
        Objects.requireNonNull(packages);
        mPackages = new HashSet<>(packages);
        setPackagesInternal(packages);
    }

    /**
@@ -133,6 +135,15 @@ public final class LockTaskPolicy extends PolicyValue<LockTaskPolicy> {
        mFlags = flags;
    }

    private void setPackagesInternal(Set<String> packages) {
        if (devicePolicySizeTrackingEnabled()) {
            for (String p : packages) {
                PolicySizeVerifier.enforceMaxPackageNameLength(p);
            }
        }
        mPackages = new HashSet<>(packages);
    }

    @Override
    public boolean equals(@Nullable Object o) {
        if (this == o) return true;
Loading