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

Commit 38d5c1e8 authored by Adrian Roos's avatar Adrian Roos Committed by android-build-merger
Browse files

Merge "FRP: save password quality in DPM.resetPassword" am: 08d4eb17

am: 63573186

Change-Id: Idcccada2ecdb5b1cf011d11dd239c1ee27169882
parents 68834fcc 63573186
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -836,6 +836,11 @@ public class LockPatternUtils {
                    + "of length " + MIN_LOCK_PASSWORD_SIZE);
        }

        if (requestedQuality < PASSWORD_QUALITY_NUMERIC) {
            throw new IllegalArgumentException("quality must be at least NUMERIC, but was "
                    + requestedQuality);
        }

        final int currentQuality = getKeyguardStoredPasswordQuality(userHandle);
        setKeyguardStoredPasswordQuality(
                computePasswordQuality(CREDENTIAL_TYPE_PASSWORD, password, requestedQuality),
+5 −3
Original line number Diff line number Diff line
@@ -4789,14 +4789,16 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
    private boolean resetPasswordInternal(String password, long tokenHandle, byte[] token,
            int flags, int callingUid, int userHandle) {
        int quality;
        final int realQuality;
        synchronized (getLockObject()) {
            quality = getPasswordQuality(null, userHandle, /* parent */ false);
            if (quality == DevicePolicyManager.PASSWORD_QUALITY_MANAGED) {
                quality = PASSWORD_QUALITY_UNSPECIFIED;
            }
            final PasswordMetrics metrics = PasswordMetrics.computeForPassword(password);
            realQuality = metrics.quality;
            if (quality != PASSWORD_QUALITY_UNSPECIFIED) {
                final int realQuality = metrics.quality;
                if (realQuality < quality
                        && quality != DevicePolicyManager.PASSWORD_QUALITY_COMPLEX) {
                    Slog.w(LOG_TAG, "resetPassword: password quality 0x"
@@ -4883,7 +4885,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
        try {
            if (token == null) {
                if (!TextUtils.isEmpty(password)) {
                    mLockPatternUtils.saveLockPassword(password, null, quality, userHandle);
                    mLockPatternUtils.saveLockPassword(password, null, realQuality, userHandle);
                } else {
                    mLockPatternUtils.clearLock(null, userHandle);
                }
@@ -4892,7 +4894,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
                result = mLockPatternUtils.setLockCredentialWithToken(password,
                        TextUtils.isEmpty(password) ? LockPatternUtils.CREDENTIAL_TYPE_NONE
                                : LockPatternUtils.CREDENTIAL_TYPE_PASSWORD,
                                quality, tokenHandle, token, userHandle);
                        realQuality, tokenHandle, token, userHandle);
            }
            boolean requireEntry = (flags & DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY) != 0;
            if (requireEntry) {
+1 −1
Original line number Diff line number Diff line
@@ -4181,7 +4181,7 @@ public class DevicePolicyManagerTest extends DpmTestBase {
        // test reset password with token
        when(getServices().lockPatternUtils.setLockCredentialWithToken(eq(password),
                eq(LockPatternUtils.CREDENTIAL_TYPE_PASSWORD),
                eq(DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED), eq(handle), eq(token),
                eq(DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC), eq(handle), eq(token),
                eq(UserHandle.USER_SYSTEM)))
                .thenReturn(true);
        assertTrue(dpm.resetPasswordWithToken(admin1, password, token, 0));