Merge "Prevent multi-threaded access to digest object" into nyc-dev

This commit is contained in:
Hall Liu
2016-03-17 22:24:38 +00:00
committed by Android (Google) Code Review

View File

@@ -44,6 +44,7 @@ final public class Log {
public static final boolean ERROR = isLoggable(android.util.Log.ERROR); public static final boolean ERROR = isLoggable(android.util.Log.ERROR);
private static MessageDigest sMessageDigest; private static MessageDigest sMessageDigest;
private static final Object sMessageDigestLock = new Object();
private Log() {} private Log() {}
@@ -57,7 +58,9 @@ final public class Log {
} catch (NoSuchAlgorithmException e) { } catch (NoSuchAlgorithmException e) {
md = null; md = null;
} }
sMessageDigest = md; synchronized (sMessageDigestLock) {
sMessageDigest = md;
}
return null; return null;
} }
}.execute(); }.execute();
@@ -187,13 +190,15 @@ final public class Log {
} }
private static String secureHash(byte[] input) { private static String secureHash(byte[] input) {
if (sMessageDigest != null) { synchronized (sMessageDigestLock) {
sMessageDigest.reset(); if (sMessageDigest != null) {
sMessageDigest.update(input); sMessageDigest.reset();
byte[] result = sMessageDigest.digest(); sMessageDigest.update(input);
return encodeHex(result); byte[] result = sMessageDigest.digest();
} else { return encodeHex(result);
return "Uninitialized SHA1"; } else {
return "Uninitialized SHA1";
}
} }
} }