From 792ad96eea1ad10da3a65f2655c194a544f49939 Mon Sep 17 00:00:00 2001 From: Hall Liu Date: Thu, 17 Mar 2016 11:27:55 -0700 Subject: [PATCH] Prevent multi-threaded access to digest object Bug: 27717431 Change-Id: I3ebd1dda7386c35078c0624df1446e64c3fb0aa0 --- telecomm/java/android/telecom/Log.java | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/telecomm/java/android/telecom/Log.java b/telecomm/java/android/telecom/Log.java index 2ab0525a33c4e..a965342982f5a 100644 --- a/telecomm/java/android/telecom/Log.java +++ b/telecomm/java/android/telecom/Log.java @@ -44,6 +44,7 @@ final public class Log { public static final boolean ERROR = isLoggable(android.util.Log.ERROR); private static MessageDigest sMessageDigest; + private static final Object sMessageDigestLock = new Object(); private Log() {} @@ -57,7 +58,9 @@ final public class Log { } catch (NoSuchAlgorithmException e) { md = null; } - sMessageDigest = md; + synchronized (sMessageDigestLock) { + sMessageDigest = md; + } return null; } }.execute(); @@ -187,13 +190,15 @@ final public class Log { } private static String secureHash(byte[] input) { - if (sMessageDigest != null) { - sMessageDigest.reset(); - sMessageDigest.update(input); - byte[] result = sMessageDigest.digest(); - return encodeHex(result); - } else { - return "Uninitialized SHA1"; + synchronized (sMessageDigestLock) { + if (sMessageDigest != null) { + sMessageDigest.reset(); + sMessageDigest.update(input); + byte[] result = sMessageDigest.digest(); + return encodeHex(result); + } else { + return "Uninitialized SHA1"; + } } }