diff options
author | Tyler Gunn <tgunn@google.com> | 2019-02-13 13:15:56 -0800 |
---|---|---|
committer | Tyler Gunn <tgunn@google.com> | 2019-02-13 15:07:59 -0800 |
commit | fd74d53f6f56cd6674d60d5e573edeaf0b988849 (patch) | |
tree | 1fa814d25e53cb0fd94514ef6d799fa7a4dc7851 /telecomm/java/android/telecom/Log.java | |
parent | cefdee854057aa6dc5ef49b0b7d0616661f57b03 (diff) |
Add support for Telecom logging to obfuscate string phone numbers.
Test: Manual
Bug: 117472746
Change-Id: I48e29fd9a6ab1d41fdefb55393c7c326ec72a87f
Diffstat (limited to 'telecomm/java/android/telecom/Log.java')
-rw-r--r-- | telecomm/java/android/telecom/Log.java | 42 |
1 files changed, 29 insertions, 13 deletions
diff --git a/telecomm/java/android/telecom/Log.java b/telecomm/java/android/telecom/Log.java index 0eb991777d74..16791a4b8680 100644 --- a/telecomm/java/android/telecom/Log.java +++ b/telecomm/java/android/telecom/Log.java @@ -18,7 +18,6 @@ package android.telecom; import android.content.Context; import android.net.Uri; -import android.os.AsyncTask; import android.os.Build; import android.telecom.Logging.EventManager; import android.telecom.Logging.Session; @@ -29,8 +28,6 @@ import android.text.TextUtils; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.IndentingPrintWriter; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; import java.util.IllegalFormatException; import java.util.Locale; @@ -373,6 +370,12 @@ public class Log { return FORCE_LOGGING || android.util.Log.isLoggable(TAG, level); } + /** + * Generates an obfuscated string for a calling handle in {@link Uri} format, or a raw phone + * phone number in {@link String} format. + * @param pii The information to obfuscate. + * @return The obfuscated string. + */ public static String piiHandle(Object pii) { if (pii == null || VERBOSE) { return String.valueOf(pii); @@ -389,16 +392,7 @@ public class Log { String textToObfuscate = uri.getSchemeSpecificPart(); if (PhoneAccount.SCHEME_TEL.equals(scheme)) { - int numDigitsToObfuscate = getDialableCount(textToObfuscate) - - NUM_DIALABLE_DIGITS_TO_LOG; - for (int i = 0; i < textToObfuscate.length(); i++) { - char c = textToObfuscate.charAt(i); - boolean isDialable = PhoneNumberUtils.isDialable(c); - if (isDialable) { - numDigitsToObfuscate--; - } - sb.append(isDialable && numDigitsToObfuscate >= 0 ? "*" : c); - } + obfuscatePhoneNumber(sb, textToObfuscate); } else if (PhoneAccount.SCHEME_SIP.equals(scheme)) { for (int i = 0; i < textToObfuscate.length(); i++) { char c = textToObfuscate.charAt(i); @@ -410,12 +404,34 @@ public class Log { } else { sb.append(pii(pii)); } + } else if (pii instanceof String) { + String number = (String) pii; + obfuscatePhoneNumber(sb, number); } return sb.toString(); } /** + * Obfuscates a phone number, allowing NUM_DIALABLE_DIGITS_TO_LOG digits to be exposed for the + * phone number. + * @param sb String buffer to write obfuscated number to. + * @param phoneNumber The number to obfuscate. + */ + private static void obfuscatePhoneNumber(StringBuilder sb, String phoneNumber) { + int numDigitsToObfuscate = getDialableCount(phoneNumber) + - NUM_DIALABLE_DIGITS_TO_LOG; + for (int i = 0; i < phoneNumber.length(); i++) { + char c = phoneNumber.charAt(i); + boolean isDialable = PhoneNumberUtils.isDialable(c); + if (isDialable) { + numDigitsToObfuscate--; + } + sb.append(isDialable && numDigitsToObfuscate >= 0 ? "*" : c); + } + } + + /** * Determines the number of dialable characters in a string. * @param toCount The string to count dialable characters in. * @return The count of dialable characters. |