Merge "Fix TrustedCredentialsSettings NPE" am: c9e532f508
am: 93860b298b
am: 21e55623f2
am: b4204836cf
Change-Id: I7e9a1cb5c57fb58610cb20ba3d1469b752193e9d
This commit is contained in:
@@ -61,6 +61,7 @@ import android.widget.Switch;
|
||||
import android.widget.TabHost;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.android.internal.annotations.GuardedBy;
|
||||
import com.android.internal.app.UnlaunchableAppActivity;
|
||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
import com.android.internal.widget.LockPatternUtils;
|
||||
@@ -152,6 +153,7 @@ public class TrustedCredentialsSettings extends OptionsMenuFragment
|
||||
private int mConfirmingCredentialUser;
|
||||
private IntConsumer mConfirmingCredentialListener;
|
||||
private Set<AdapterData.AliasLoader> mAliasLoaders = new ArraySet<AdapterData.AliasLoader>(2);
|
||||
@GuardedBy("mKeyChainConnectionByProfileId")
|
||||
private final SparseArray<KeyChainConnection>
|
||||
mKeyChainConnectionByProfileId = new SparseArray<KeyChainConnection>();
|
||||
|
||||
@@ -256,12 +258,14 @@ public class TrustedCredentialsSettings extends OptionsMenuFragment
|
||||
}
|
||||
|
||||
private void closeKeyChainConnections() {
|
||||
synchronized (mKeyChainConnectionByProfileId) {
|
||||
final int n = mKeyChainConnectionByProfileId.size();
|
||||
for (int i = 0; i < n; ++i) {
|
||||
mKeyChainConnectionByProfileId.valueAt(i).close();
|
||||
}
|
||||
mKeyChainConnectionByProfileId.clear();
|
||||
}
|
||||
}
|
||||
|
||||
private void addTab(Tab tab) {
|
||||
TabHost.TabSpec systemSpec = mTabHost.newTabSpec(tab.mTag)
|
||||
@@ -684,6 +688,7 @@ public class TrustedCredentialsSettings extends OptionsMenuFragment
|
||||
SparseArray<List<CertHolder>> certHoldersByProfile =
|
||||
new SparseArray<List<CertHolder>>();
|
||||
try {
|
||||
synchronized(mKeyChainConnectionByProfileId) {
|
||||
List<UserHandle> profiles = mUserManager.getUserProfiles();
|
||||
final int n = profiles.size();
|
||||
// First we get all aliases for all profiles in order to show progress
|
||||
@@ -740,6 +745,7 @@ public class TrustedCredentialsSettings extends OptionsMenuFragment
|
||||
certHoldersByProfile.put(profileId, certHolders);
|
||||
}
|
||||
return certHoldersByProfile;
|
||||
}
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "Remote exception while loading aliases.", e);
|
||||
return new SparseArray<List<CertHolder>>();
|
||||
@@ -936,6 +942,7 @@ public class TrustedCredentialsSettings extends OptionsMenuFragment
|
||||
public List<X509Certificate> getX509CertsFromCertHolder(CertHolder certHolder) {
|
||||
List<X509Certificate> certificates = null;
|
||||
try {
|
||||
synchronized (mKeyChainConnectionByProfileId) {
|
||||
KeyChainConnection keyChainConnection = mKeyChainConnectionByProfileId.get(
|
||||
certHolder.mProfileId);
|
||||
IKeyChainService service = keyChainConnection.getService();
|
||||
@@ -947,6 +954,7 @@ public class TrustedCredentialsSettings extends OptionsMenuFragment
|
||||
X509Certificate certificate = KeyChain.toCertificate(encodedCertificate);
|
||||
certificates.add(certificate);
|
||||
}
|
||||
}
|
||||
} catch (RemoteException ex) {
|
||||
Log.e(TAG, "RemoteException while retrieving certificate chain for root "
|
||||
+ certHolder.mAlias, ex);
|
||||
@@ -985,6 +993,7 @@ public class TrustedCredentialsSettings extends OptionsMenuFragment
|
||||
@Override
|
||||
protected Boolean doInBackground(Void... params) {
|
||||
try {
|
||||
synchronized (mKeyChainConnectionByProfileId) {
|
||||
KeyChainConnection keyChainConnection = mKeyChainConnectionByProfileId.get(
|
||||
mCertHolder.mProfileId);
|
||||
IKeyChainService service = keyChainConnection.getService();
|
||||
@@ -995,6 +1004,7 @@ public class TrustedCredentialsSettings extends OptionsMenuFragment
|
||||
} else {
|
||||
return service.deleteCaCertificate(mCertHolder.mAlias);
|
||||
}
|
||||
}
|
||||
} catch (CertificateEncodingException | SecurityException | IllegalStateException
|
||||
| RemoteException e) {
|
||||
Log.w(TAG, "Error while toggling alias " + mCertHolder.mAlias, e);
|
||||
|
Reference in New Issue
Block a user