diff options
author | Hall Liu <hallliu@google.com> | 2016-03-17 11:27:55 -0700 |
---|---|---|
committer | Hall Liu <hallliu@google.com> | 2016-03-17 11:27:55 -0700 |
commit | 792ad96eea1ad10da3a65f2655c194a544f49939 (patch) | |
tree | 5bd5067a17c7997a799bb5645eca07d1c06324f5 /telecomm/java/android/telecom/Log.java | |
parent | d3eb078ac7aa1a046d1b23519d91ac0c8d3241bc (diff) |
Prevent multi-threaded access to digest object
Bug: 27717431
Change-Id: I3ebd1dda7386c35078c0624df1446e64c3fb0aa0
Diffstat (limited to 'telecomm/java/android/telecom/Log.java')
-rw-r--r-- | telecomm/java/android/telecom/Log.java | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/telecomm/java/android/telecom/Log.java b/telecomm/java/android/telecom/Log.java index 2ab0525a33c4..a965342982f5 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"; + } } } |