Merge "Wipe the LockscreenCredential in DPMS#resetPasswordInternal" into main
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index dd49260..293f379 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -5672,15 +5672,18 @@
 
     private boolean resetPasswordInternal(String password, long tokenHandle, byte[] token,
             int flags, CallerIdentity caller) {
+        final boolean isPin = PasswordMetrics.isNumericOnly(password);
+        try (LockscreenCredential newCredential =
+                isPin ? LockscreenCredential.createPin(password) :
+                       LockscreenCredential.createPasswordOrNone(password)) {
+            return resetPasswordInternal(newCredential, tokenHandle, token, flags, caller);
+        }
+    }
+
+    private boolean resetPasswordInternal(LockscreenCredential newCredential,
+            long tokenHandle, byte[] token, int flags, CallerIdentity caller) {
         final int callingUid = caller.getUid();
         final int userHandle = UserHandle.getUserId(callingUid);
-        final boolean isPin = PasswordMetrics.isNumericOnly(password);
-        final LockscreenCredential newCredential;
-        if (isPin) {
-            newCredential = LockscreenCredential.createPin(password);
-        } else {
-            newCredential = LockscreenCredential.createPasswordOrNone(password);
-        }
         synchronized (getLockObject()) {
             final PasswordMetrics minMetrics = getPasswordMinimumMetricsUnchecked(userHandle);
             final int complexity = getAggregatedPasswordComplexityLocked(userHandle);