aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Ebinger <breadley@google.com>2021-05-24 23:23:54 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-05-24 23:23:54 +0000
commit95589f9e30dc6f328998dc29e6772656727a62da (patch)
tree9bc220e1ebc76b612e399aa3fed49d1ca5be9300
parentd521dbe696fd87705c7a0745cc496d540b72329d (diff)
parent995e6a3a9f216f572540679bb386d2e96323a8e8 (diff)
downloadims-95589f9e30dc6f328998dc29e6772656727a62da.tar.gz
Remove SIP/TEL URIs in PIDF XML for logging am: 995e6a3a9f
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/opt/net/ims/+/14704827 Change-Id: I5a81f4946e0e705ce673428782382ceff9952cf0
-rw-r--r--src/java/com/android/ims/rcs/uce/presence/publish/PublishControllerImpl.java9
-rw-r--r--src/java/com/android/ims/rcs/uce/presence/publish/PublishUtils.java14
-rw-r--r--tests/src/com/android/ims/rcs/uce/presence/publish/PublishControllerImplTest.java43
3 files changed, 64 insertions, 2 deletions
diff --git a/src/java/com/android/ims/rcs/uce/presence/publish/PublishControllerImpl.java b/src/java/com/android/ims/rcs/uce/presence/publish/PublishControllerImpl.java
index e352bec3..17060d0f 100644
--- a/src/java/com/android/ims/rcs/uce/presence/publish/PublishControllerImpl.java
+++ b/src/java/com/android/ims/rcs/uce/presence/publish/PublishControllerImpl.java
@@ -18,6 +18,7 @@ package com.android.ims.rcs.uce.presence.publish;
import android.annotation.NonNull;
import android.content.Context;
+import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
@@ -948,7 +949,13 @@ public class PublishControllerImpl implements PublishController {
pw.println(mPublishStateUpdatedTime);
pw.println("Last PIDF XML:");
pw.increaseIndent();
- pw.println(mPidfXml);
+ if (Build.IS_ENG) {
+ pw.println(mPidfXml);
+ } else if (Build.IS_DEBUGGABLE) {
+ pw.println(PublishUtils.removeNumbersFromUris(mPidfXml));
+ } else {
+ pw.println(mPidfXml != null ? "***" : "null");
+ }
pw.decreaseIndent();
if (mPublishProcessor != null) {
diff --git a/src/java/com/android/ims/rcs/uce/presence/publish/PublishUtils.java b/src/java/com/android/ims/rcs/uce/presence/publish/PublishUtils.java
index de7305b0..27bded8a 100644
--- a/src/java/com/android/ims/rcs/uce/presence/publish/PublishUtils.java
+++ b/src/java/com/android/ims/rcs/uce/presence/publish/PublishUtils.java
@@ -28,7 +28,7 @@ import com.android.ims.rcs.uce.util.UceUtils;
/**
* The util class of publishing device's capabilities.
*/
-class PublishUtils {
+public class PublishUtils {
private static final String LOG_TAG = UceUtils.getLogPrefix() + "PublishUtils";
private static final String SCHEME_SIP = "sip";
@@ -53,6 +53,18 @@ class PublishUtils {
}
}
+ /**
+ * Find all instances of sip/sips/tel URIs containing PII and replace them.
+ * <p>
+ * This is used for removing PII in logging.
+ * @param source The source string to remove the phone numbers from.
+ * @return A version of the given string with SIP URIs removed.
+ */
+ public static String removeNumbersFromUris(String source) {
+ // Replace only the number portion in the sip/sips/tel URI
+ return source.replaceAll("(?:sips?|tel):(\\+?[\\d\\-]+)", "[removed]");
+ }
+
private static Uri getContactUriFromIsim(TelephonyManager telephonyManager) {
// Get the home network domain and the array of the public user identities
String domain = telephonyManager.getIsimDomain();
diff --git a/tests/src/com/android/ims/rcs/uce/presence/publish/PublishControllerImplTest.java b/tests/src/com/android/ims/rcs/uce/presence/publish/PublishControllerImplTest.java
index 76934a45..ba388104 100644
--- a/tests/src/com/android/ims/rcs/uce/presence/publish/PublishControllerImplTest.java
+++ b/tests/src/com/android/ims/rcs/uce/presence/publish/PublishControllerImplTest.java
@@ -18,6 +18,9 @@ package com.android.ims.rcs.uce.presence.publish;
import static com.android.ims.rcs.uce.presence.publish.PublishController.PUBLISH_TRIGGER_RETRY;
import static com.android.ims.rcs.uce.presence.publish.PublishController.PUBLISH_TRIGGER_VT_SETTING_CHANGE;
+
+import static junit.framework.Assert.assertFalse;
+
import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
@@ -272,6 +275,46 @@ public class PublishControllerImplTest extends ImsTestBase {
verify(mPublishProcessor).doPublish(PUBLISH_TRIGGER_VT_SETTING_CHANGE);
}
+ @Test
+ @SmallTest
+ public void testRemoveNumber() {
+ // Contrived example, usually formatting of URIs will be consistent in doc.
+ final String testString = "<?xml version='1.0' encoding='utf-8' standalone='yes' "
+ + "?><presence entity=\"sip:15555551212@example.com\" "
+ + "xmlns=\"urn:ietf:params:xml:ns:pidf\" "
+ + "xmlns:op=\"urn:oma:xml:prs:pidf:oma-pres\" "
+ + "xmlns:caps=\"urn:ietf:params:xml:ns:pidf:caps\"><tuple "
+ + "id=\"tid0\"><status><basic>open</basic></status><op:service-description><op"
+ + ":service-id>org.3gpp.urn:urn-7:3gpp-application.ims.iari.rcse"
+ + ".dp</op:service-id><op:version>1.0</op:version><op:description>Capabilities "
+ + "Discovery Service</op:description></op:service-description><contact>sips"
+ + ":15555551212@example.com</contact></tuple><tuple "
+ + "id=\"tid1\"><status><basic>open</basic></status><op:service-description><op"
+ + ":service-id>org.3gpp.urn:urn-7:3gpp-service.ims.icsi"
+ + ".mmtel</op:service-id><op:version>1.0</op:version><op:description>Voice and "
+ + "Video Service</op:description></op:service-description><caps:servcaps><caps"
+ + ":audio>true</caps:audio><caps:video>true</caps:video><caps:duplex><caps"
+ + ":supported><caps:full /></caps:supported></caps:duplex></caps:servcaps"
+ + "><contact>tel:15555551212@example.com</contact></tuple><tuple "
+ + "id=\"tid2\"><status><basic>open</basic></status><op:service-description><op"
+ + ":service-id>org.3gpp.urn:urn-7:3gpp-application.ims.iari.rcs"
+ + ".geopush</op:service-id><op:version>1"
+ + ".0</op:version></op:service-description><contact>sip:1-555-555-1212@example.com"
+ + "</contact></tuple><tuple "
+ + "id=\"tid3\"><status><basic>open</basic></status><op:service-description><op"
+ + ":service-id>org.openmobilealliance:File-Transfer-HTTP</op:service-id><op"
+ + ":version>1.0</op:version></op:service-description><contact>tel:1-555-555-1212@"
+ + "example.com</contact></tuple><tuple "
+ + "id=\"tid4\"><status><basic>open</basic></status><op:service-description><op"
+ + ":service-id>org.openmobilealliance:ChatSession</op:service-id><op:version>2"
+ + ".0</op:version></op:service-description><contact>sip:+15555551212@example.com"
+ + "</contact></tuple></presence>";
+ String result = PublishUtils.removeNumbersFromUris(testString);
+ // only check for substrings of the full number and variations.
+ assertFalse("still contained 5555551212: " + testString, result.contains("5555551212"));
+ assertFalse("still contained 555-555-1212: " + testString, result.contains("555-555-1212"));
+ }
+
private PublishControllerImpl createPublishController() {
PublishControllerImpl publishController = new PublishControllerImpl(mContext, mSubId,
mUceCtrlCallback, Looper.getMainLooper(), mDeviceCapListenerFactory,