summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSantos Cordon <santoscordon@google.com>2016-05-23 18:22:37 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-05-23 18:22:37 +0000
commit3081e5a8b67bcb9cb4fc1dcf75ce1f3faf7d547f (patch)
tree627773f511a1fee5daf8bb8a74870ad34bae5a22
parentfa784e32faa9a2a99e87c38ee194c1a54dfcb106 (diff)
parent226ac3ad92a383436a13da89959178d51a0cec1b (diff)
downloadvoip-nougat-mr1-security-release.tar.gz
Hide SIP pii data from logs in SipService.android-cts_7.1_r1android-cts-7.1_r9android-cts-7.1_r8android-cts-7.1_r7android-cts-7.1_r6android-cts-7.1_r5android-cts-7.1_r4android-cts-7.1_r3android-cts-7.1_r29android-cts-7.1_r28android-cts-7.1_r27android-cts-7.1_r26android-cts-7.1_r25android-cts-7.1_r24android-cts-7.1_r23android-cts-7.1_r22android-cts-7.1_r21android-cts-7.1_r20android-cts-7.1_r2android-cts-7.1_r19android-cts-7.1_r18android-cts-7.1_r17android-cts-7.1_r16android-cts-7.1_r15android-cts-7.1_r14android-cts-7.1_r13android-cts-7.1_r12android-cts-7.1_r11android-cts-7.1_r10android-cts-7.1_r1android-7.1.2_r9android-7.1.2_r8android-7.1.2_r6android-7.1.2_r5android-7.1.2_r4android-7.1.2_r39android-7.1.2_r38android-7.1.2_r37android-7.1.2_r36android-7.1.2_r33android-7.1.2_r32android-7.1.2_r30android-7.1.2_r3android-7.1.2_r29android-7.1.2_r28android-7.1.2_r27android-7.1.2_r25android-7.1.2_r24android-7.1.2_r23android-7.1.2_r2android-7.1.2_r19android-7.1.2_r18android-7.1.2_r17android-7.1.2_r16android-7.1.2_r15android-7.1.2_r14android-7.1.2_r13android-7.1.2_r12android-7.1.2_r11android-7.1.2_r10android-7.1.2_r1android-7.1.1_r9android-7.1.1_r8android-7.1.1_r7android-7.1.1_r61android-7.1.1_r60android-7.1.1_r6android-7.1.1_r59android-7.1.1_r58android-7.1.1_r57android-7.1.1_r56android-7.1.1_r55android-7.1.1_r54android-7.1.1_r53android-7.1.1_r52android-7.1.1_r51android-7.1.1_r50android-7.1.1_r49android-7.1.1_r48android-7.1.1_r47android-7.1.1_r46android-7.1.1_r45android-7.1.1_r44android-7.1.1_r43android-7.1.1_r42android-7.1.1_r41android-7.1.1_r40android-7.1.1_r4android-7.1.1_r39android-7.1.1_r38android-7.1.1_r35android-7.1.1_r33android-7.1.1_r32android-7.1.1_r31android-7.1.1_r3android-7.1.1_r28android-7.1.1_r27android-7.1.1_r26android-7.1.1_r25android-7.1.1_r24android-7.1.1_r23android-7.1.1_r22android-7.1.1_r21android-7.1.1_r20android-7.1.1_r2android-7.1.1_r17android-7.1.1_r16android-7.1.1_r15android-7.1.1_r14android-7.1.1_r13android-7.1.1_r12android-7.1.1_r11android-7.1.1_r10android-7.1.1_r1android-7.1.0_r7android-7.1.0_r6android-7.1.0_r5android-7.1.0_r4android-7.1.0_r3android-7.1.0_r2android-7.1.0_r1nougat-mr2.3-releasenougat-mr2.2-releasenougat-mr2.1-releasenougat-mr2-security-releasenougat-mr2-releasenougat-mr2-pixel-releasenougat-mr2-devnougat-mr1.8-releasenougat-mr1.7-releasenougat-mr1.6-releasenougat-mr1.5-releasenougat-mr1.4-releasenougat-mr1.3-releasenougat-mr1.2-releasenougat-mr1.1-releasenougat-mr1-volantis-releasenougat-mr1-security-releasenougat-mr1-releasenougat-mr1-flounder-releasenougat-mr1-devnougat-mr1-cts-releasenougat-dr1-release
am: 226ac3ad92 * commit '226ac3ad92a383436a13da89959178d51a0cec1b': Hide SIP pii data from logs in SipService. Change-Id: Ia1df99c99c7c13138aed44a11e5b907d4601b9cf
-rw-r--r--src/java/com/android/server/sip/SipService.java51
-rw-r--r--src/java/com/android/server/sip/SipSessionGroup.java2
2 files changed, 46 insertions, 7 deletions
diff --git a/src/java/com/android/server/sip/SipService.java b/src/java/com/android/server/sip/SipService.java
index 97abfb7..d14a8d6 100644
--- a/src/java/com/android/server/sip/SipService.java
+++ b/src/java/com/android/server/sip/SipService.java
@@ -54,6 +54,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.Executor;
+
import javax.sip.SipException;
/**
@@ -169,7 +170,7 @@ public final class SipService extends ISipService.Stub {
+ "the profile is not opened");
return;
}
- if (DBG) log("open3: " + localProfile.getUriString() + ": "
+ if (DBG) log("open3: " + obfuscateSipUri(localProfile.getUriString()) + ": "
+ incomingCallPendingIntent + ": " + listener);
try {
SipSessionGroupExt group = createGroup(localProfile,
@@ -528,13 +529,13 @@ public final class SipService extends ISipService.Stub {
mIncomingCallPendingIntent = pIntent;
}
- public void openToReceiveCalls() throws SipException {
+ public void openToReceiveCalls() {
mOpenedToReceiveCalls = true;
if (mNetworkType != -1) {
mSipGroup.openToReceiveCalls(this);
mAutoRegistration.start(mSipGroup);
}
- if (SSGE_DBG) log("openToReceiveCalls: " + getUri() + ": "
+ if (SSGE_DBG) log("openToReceiveCalls: " + obfuscateSipUri(getUri()) + ": "
+ mIncomingCallPendingIntent);
}
@@ -542,7 +543,7 @@ public final class SipService extends ISipService.Stub {
throws SipException {
if (SSGE_DBG) {
log("onConnectivityChanged: connected=" + connected + " uri="
- + getUri() + ": " + mIncomingCallPendingIntent);
+ + obfuscateSipUri(getUri()) + ": " + mIncomingCallPendingIntent);
}
mSipGroup.onConnectivityChanged();
if (connected) {
@@ -558,7 +559,8 @@ public final class SipService extends ISipService.Stub {
mOpenedToReceiveCalls = false;
mSipGroup.close();
mAutoRegistration.stop();
- if (SSGE_DBG) log("close: " + getUri() + ": " + mIncomingCallPendingIntent);
+ if (SSGE_DBG) log("close: " + obfuscateSipUri(getUri()) + ": "
+ + mIncomingCallPendingIntent);
}
public ISipSession createSession(ISipSessionListener listener) {
@@ -826,7 +828,8 @@ public final class SipService extends ISipService.Stub {
// in registration to avoid adding duplicate entries to server
mMyWakeLock.acquire(mSession);
mSession.unregister();
- SAR_TAG = "SipAutoReg:" + mSession.getLocalProfile().getUriString();
+ SAR_TAG = "SipAutoReg:" +
+ obfuscateSipUri(mSession.getLocalProfile().getUriString());
if (SAR_DBG) log("start: group=" + group);
}
}
@@ -1283,4 +1286,40 @@ public final class SipService extends ISipService.Stub {
private void loge(String s, Throwable e) {
Rlog.e(TAG, s, e);
}
+
+ public static String obfuscateSipUri(String sipUri) {
+ StringBuilder sb = new StringBuilder();
+ int start = 0;
+ sipUri = sipUri.trim();
+ if (sipUri.startsWith("sip:")) {
+ start = 4;
+ sb.append("sip:");
+ }
+
+ char prevC = '\0';
+ int len = sipUri.length();
+ for (int i = start; i < len; i++) {
+ char c = sipUri.charAt(i);
+ char nextC = (i + 1 < len) ? sipUri.charAt(i + 1) : '\0';
+ char charToAppend = '*';
+
+ // This logic allows the first and last letter before an '@' sign to show up without
+ // obfuscation as well as the first and last letter an '@' sign.
+ // e.g.: brad@comment.it => b**d@c******.*t
+ if ((i - start < 1) ||
+ (i + 1 == len) ||
+ isAllowedCharacter(c) ||
+ (prevC == '@') ||
+ (nextC == '@')) {
+ charToAppend = c;
+ }
+ sb.append(charToAppend);
+ prevC = c;
+ }
+ return sb.toString();
+ }
+
+ private static boolean isAllowedCharacter(char c) {
+ return c == '@' || c == '.';
+ }
}
diff --git a/src/java/com/android/server/sip/SipSessionGroup.java b/src/java/com/android/server/sip/SipSessionGroup.java
index e820f35..9510b9a 100644
--- a/src/java/com/android/server/sip/SipSessionGroup.java
+++ b/src/java/com/android/server/sip/SipSessionGroup.java
@@ -237,7 +237,7 @@ class SipSessionGroup implements SipListener {
}
public synchronized void close() {
- if (DBG) log("close: " + mLocalProfile.getUriString());
+ if (DBG) log("close: " + SipService.obfuscateSipUri(mLocalProfile.getUriString()));
onConnectivityChanged();
mSessionMap.clear();
closeToNotReceiveCalls();