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

Commit 916b1e50 authored by Fyodor Kupolov's avatar Fyodor Kupolov Committed by Android (Google) Code Review
Browse files

Merge "Changed the logic of calculating effective password limits"

parents 815eca18 0a32d35c
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.server.devicepolicy;

import static android.Manifest.permission.MANAGE_CA_CERTIFICATES;
import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_COMPLEX;
import static android.app.admin.DevicePolicyManager.WIPE_EXTERNAL_STORAGE;
import static android.app.admin.DevicePolicyManager.WIPE_RESET_PROTECTION_DATA;
import static android.content.pm.PackageManager.GET_UNINSTALLED_PACKAGES;
@@ -2352,6 +2353,9 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
                final int N = policy.mAdminList.size();
                for (int i=0; i<N; i++) {
                    ActiveAdmin admin = policy.mAdminList.get(i);
                    if (!isLimitPasswordAllowed(admin, PASSWORD_QUALITY_COMPLEX)) {
                        continue;
                    }
                    if (length < admin.minimumPasswordLetters) {
                        length = admin.minimumPasswordLetters;
                    }
@@ -2397,6 +2401,9 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
                final int N = policy.mAdminList.size();
                for (int i = 0; i < N; i++) {
                    ActiveAdmin admin = policy.mAdminList.get(i);
                    if (!isLimitPasswordAllowed(admin, PASSWORD_QUALITY_COMPLEX)) {
                        continue;
                    }
                    if (length < admin.minimumPasswordNumeric) {
                        length = admin.minimumPasswordNumeric;
                    }
@@ -2442,6 +2449,9 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
                final int N = policy.mAdminList.size();
                for (int i=0; i<N; i++) {
                    ActiveAdmin admin = policy.mAdminList.get(i);
                    if (!isLimitPasswordAllowed(admin, PASSWORD_QUALITY_COMPLEX)) {
                        continue;
                    }
                    if (length < admin.minimumPasswordSymbols) {
                        length = admin.minimumPasswordSymbols;
                    }
@@ -2487,6 +2497,9 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
                final int N = policy.mAdminList.size();
                for (int i=0; i<N; i++) {
                    ActiveAdmin admin = policy.mAdminList.get(i);
                    if (!isLimitPasswordAllowed(admin, PASSWORD_QUALITY_COMPLEX)) {
                        continue;
                    }
                    if (length < admin.minimumPasswordNonLetter) {
                        length = admin.minimumPasswordNonLetter;
                    }
@@ -5627,4 +5640,15 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
            }
        }
    }

    /**
     * Returns true if specified admin is allowed to limit passwords and has a
     * {@code passwordQuality} of at least {@code minPasswordQuality}
     */
    private static boolean isLimitPasswordAllowed(ActiveAdmin admin, int minPasswordQuality) {
        if (admin.passwordQuality < minPasswordQuality) {
            return false;
        }
        return admin.info.usesPolicy(DeviceAdminInfo.USES_POLICY_LIMIT_PASSWORD);
    }
}