From 319f9fe1024c3b9c941e6e4701f2d4ac651cb3da Mon Sep 17 00:00:00 2001 From: Chad Brubaker Date: Mon, 13 Jun 2016 15:51:40 -0700 Subject: [PATCH] Use NoPreloadHolder for certificate sources The static instances of SystemCertificateSource and UserCertificateSource depend on the current user, avoid triggering their static initializer when preloaded. Bug: 29258379 Change-Id: I5088366ae67145b8bc928d6c04118529c82a7fc3 --- .../security/net/config/SystemCertificateSource.java | 7 +++++-- .../android/security/net/config/UserCertificateSource.java | 6 ++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/core/java/android/security/net/config/SystemCertificateSource.java b/core/java/android/security/net/config/SystemCertificateSource.java index abef7b453c793..cfb195b9509c8 100644 --- a/core/java/android/security/net/config/SystemCertificateSource.java +++ b/core/java/android/security/net/config/SystemCertificateSource.java @@ -25,7 +25,10 @@ import java.io.File; * @hide */ public final class SystemCertificateSource extends DirectoryCertificateSource { - private static final SystemCertificateSource INSTANCE = new SystemCertificateSource(); + private static class NoPreloadHolder { + private static final SystemCertificateSource INSTANCE = new SystemCertificateSource(); + } + private final File mUserRemovedCaDir; private SystemCertificateSource() { @@ -35,7 +38,7 @@ public final class SystemCertificateSource extends DirectoryCertificateSource { } public static SystemCertificateSource getInstance() { - return INSTANCE; + return NoPreloadHolder.INSTANCE; } @Override diff --git a/core/java/android/security/net/config/UserCertificateSource.java b/core/java/android/security/net/config/UserCertificateSource.java index 1a7d92456a3da..d6e2b3a8ca1f1 100644 --- a/core/java/android/security/net/config/UserCertificateSource.java +++ b/core/java/android/security/net/config/UserCertificateSource.java @@ -25,7 +25,9 @@ import java.io.File; * @hide */ public final class UserCertificateSource extends DirectoryCertificateSource { - private static final UserCertificateSource INSTANCE = new UserCertificateSource(); + private static class NoPreloadHolder { + private static final UserCertificateSource INSTANCE = new UserCertificateSource(); + } private UserCertificateSource() { super(new File( @@ -33,7 +35,7 @@ public final class UserCertificateSource extends DirectoryCertificateSource { } public static UserCertificateSource getInstance() { - return INSTANCE; + return NoPreloadHolder.INSTANCE; } @Override