Merge "Remove password shards from memory" into rvc-dev
diff --git a/src/com/android/settings/password/ChooseLockGeneric.java b/src/com/android/settings/password/ChooseLockGeneric.java
index 81d5036..04ee1b8 100644
--- a/src/com/android/settings/password/ChooseLockGeneric.java
+++ b/src/com/android/settings/password/ChooseLockGeneric.java
@@ -821,6 +821,14 @@
@Override
public void onDestroy() {
super.onDestroy();
+ if (mUserPassword != null) {
+ mUserPassword.zeroize();
+ }
+ // Force a garbage collection immediately to remove remnant of user password shards
+ // from memory.
+ System.gc();
+ System.runFinalization();
+ System.gc();
}
@Override
diff --git a/src/com/android/settings/password/ChooseLockPassword.java b/src/com/android/settings/password/ChooseLockPassword.java
index cdc03f9..19cc9c8 100644
--- a/src/com/android/settings/password/ChooseLockPassword.java
+++ b/src/com/android/settings/password/ChooseLockPassword.java
@@ -530,6 +530,19 @@
}
}
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ if (mCurrentCredential != null) {
+ mCurrentCredential.zeroize();
+ }
+ // Force a garbage collection immediately to remove remnant of user password shards
+ // from memory.
+ System.gc();
+ System.runFinalization();
+ System.gc();
+ }
+
protected int getStageType() {
return mForFingerprint ? Stage.TYPE_FINGERPRINT :
mForFace ? Stage.TYPE_FACE :
diff --git a/src/com/android/settings/password/ChooseLockPattern.java b/src/com/android/settings/password/ChooseLockPattern.java
index ece3da8..27fc9f0 100644
--- a/src/com/android/settings/password/ChooseLockPattern.java
+++ b/src/com/android/settings/password/ChooseLockPattern.java
@@ -617,6 +617,19 @@
}
}
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ if (mCurrentCredential != null) {
+ mCurrentCredential.zeroize();
+ }
+ // Force a garbage collection immediately to remove remnant of user password shards
+ // from memory.
+ System.gc();
+ System.runFinalization();
+ System.gc();
+ }
+
protected Intent getRedactionInterstitialIntent(Context context) {
return RedactionInterstitial.createStartIntent(context, mUserId);
}
diff --git a/src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java b/src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java
index eaea2ea..383ae4f 100644
--- a/src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java
+++ b/src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java
@@ -158,6 +158,16 @@
}
@Override
+ public void onDestroy() {
+ super.onDestroy();
+ // Force a garbage collection immediately to remove remnant of user password shards
+ // from memory.
+ System.gc();
+ System.runFinalization();
+ System.gc();
+ }
+
+ @Override
public void finish() {
super.finish();
if (getIntent().getBooleanExtra(
diff --git a/src/com/android/settings/password/ConfirmLockPassword.java b/src/com/android/settings/password/ConfirmLockPassword.java
index 6f8dbfd..8aa44e9 100644
--- a/src/com/android/settings/password/ConfirmLockPassword.java
+++ b/src/com/android/settings/password/ConfirmLockPassword.java
@@ -217,6 +217,17 @@
}
}
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ mPasswordEntry.setText(null);
+ // Force a garbage collection immediately to remove remnant of user password shards
+ // from memory.
+ System.gc();
+ System.runFinalization();
+ System.gc();
+ }
+
private int getDefaultHeader() {
if (mFrp) {
return mIsAlpha ? R.string.lockpassword_confirm_your_password_header_frp