diff options
author | Brad Ebinger <breadley@google.com> | 2021-05-24 23:23:54 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-05-24 23:23:54 +0000 |
commit | 95589f9e30dc6f328998dc29e6772656727a62da (patch) | |
tree | 9bc220e1ebc76b612e399aa3fed49d1ca5be9300 | |
parent | d521dbe696fd87705c7a0745cc496d540b72329d (diff) | |
parent | 995e6a3a9f216f572540679bb386d2e96323a8e8 (diff) | |
download | ims-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
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, |