From 5a159ce01fd1810183e5aa703ffcc526349ec27e Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Fri, 17 Nov 2023 11:16:18 -0500 Subject: [PATCH] Update libphonenumber to 8.13.23 --- .../phonenumbers/PhoneNumberFormatter.java | 9 ++++++++- .../signal/contacts/SystemContactsRepository.kt | 2 +- .../org/signal/core/util/logging/Scrubber.kt | 12 ++++++++++++ .../org/signal/core/util/logging/ScrubberTest.kt | 16 ++++++++++++++++ dependencies.gradle | 2 +- gradle/verification-metadata.xml | 5 +++++ 6 files changed, 43 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/phonenumbers/PhoneNumberFormatter.java b/app/src/main/java/org/thoughtcrime/securesms/phonenumbers/PhoneNumberFormatter.java index 9262cb1a51..cef3984038 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/phonenumbers/PhoneNumberFormatter.java +++ b/app/src/main/java/org/thoughtcrime/securesms/phonenumbers/PhoneNumberFormatter.java @@ -127,6 +127,7 @@ public class PhoneNumberFormatter { } if (isShortCode(bareNumber, localCountryCode)) { + Log.i(TAG, "Recognized number as short code."); return bareNumber; } @@ -134,7 +135,13 @@ public class PhoneNumberFormatter { try { Phonenumber.PhoneNumber parsedNumber = phoneNumberUtil.parse(processedNumber, localCountryCode); - return phoneNumberUtil.format(parsedNumber, PhoneNumberUtil.PhoneNumberFormat.E164); + String formatted = phoneNumberUtil.format(parsedNumber, PhoneNumberUtil.PhoneNumberFormat.E164); + + if (formatted.startsWith("+")) { + return formatted; + } else { + throw new NumberParseException(NumberParseException.ErrorType.NOT_A_NUMBER, "After formatting, the number did not start with +! hasRawInput: " + parsedNumber.hasRawInput()); + } } catch (NumberParseException e) { Log.w(TAG, e.toString()); if (bareNumber.charAt(0) == '+') { diff --git a/contacts/lib/src/main/java/org/signal/contacts/SystemContactsRepository.kt b/contacts/lib/src/main/java/org/signal/contacts/SystemContactsRepository.kt index 37a47f5b81..436e5c0fec 100644 --- a/contacts/lib/src/main/java/org/signal/contacts/SystemContactsRepository.kt +++ b/contacts/lib/src/main/java/org/signal/contacts/SystemContactsRepository.kt @@ -712,7 +712,7 @@ object SystemContactsRepository { while (!cursor.isAfterLast && lookupKey == cursor.getLookupKey() && cursor.isPhoneMimeType()) { val displayNumber: String? = cursor.requireString(ContactsContract.CommonDataKinds.Phone.NUMBER) - if (displayNumber != null && displayNumber.isNotEmpty()) { + if (!displayNumber.isNullOrEmpty()) { phoneDetails += ContactPhoneDetails( contactUri = ContactsContract.Contacts.getLookupUri(cursor.requireLong(ContactsContract.CommonDataKinds.Phone._ID), lookupKey), displayName = cursor.requireString(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME), diff --git a/core-util-jvm/src/main/java/org/signal/core/util/logging/Scrubber.kt b/core-util-jvm/src/main/java/org/signal/core/util/logging/Scrubber.kt index 5179280733..aab3c0ae76 100644 --- a/core-util-jvm/src/main/java/org/signal/core/util/logging/Scrubber.kt +++ b/core-util-jvm/src/main/java/org/signal/core/util/logging/Scrubber.kt @@ -23,6 +23,8 @@ object Scrubber { private val E164_PATTERN = Pattern.compile("(\\+|%2B)(\\d{5,13})(\\d{2})") private const val E164_CENSOR = "*************" + private val E164_ZERO_PATTERN = Pattern.compile("\\b(0)(\\d{8})(\\d{2})\\b") + /** The second group will be censored.*/ private val CRUDE_EMAIL_PATTERN = Pattern.compile("\\b([^\\s/])([^\\s/]*@[^\\s]+)") private const val EMAIL_CENSOR = "...@..." @@ -77,6 +79,7 @@ object Scrubber { fun scrub(input: CharSequence): CharSequence { return input .scrubE164() + .scrubE164Zero() .scrubEmail() .scrubGroupsV1() .scrubGroupsV2() @@ -96,6 +99,15 @@ object Scrubber { } } + private fun CharSequence.scrubE164Zero(): CharSequence { + return scrub(this, E164_ZERO_PATTERN) { matcher, output -> + output + .append(matcher.group(1)) + .append(E164_CENSOR, 0, matcher.group(2)!!.length) + .append(matcher.group(3)) + } + } + private fun CharSequence.scrubEmail(): CharSequence { return scrub(this, CRUDE_EMAIL_PATTERN) { matcher, output -> output diff --git a/core-util-jvm/src/test/java/org/signal/core/util/logging/ScrubberTest.kt b/core-util-jvm/src/test/java/org/signal/core/util/logging/ScrubberTest.kt index fa550aad9f..1203c513cc 100644 --- a/core-util-jvm/src/test/java/org/signal/core/util/logging/ScrubberTest.kt +++ b/core-util-jvm/src/test/java/org/signal/core/util/logging/ScrubberTest.kt @@ -30,6 +30,22 @@ class ScrubberTest(private val input: String, private val expected: String) { "A UK number +447700900000", "A UK number +**********00" ), + arrayOf( + "A Japanese number 08011112222", + "A Japanese number 0********22" + ), + arrayOf( + "A Japanese number (08011112222)", + "A Japanese number (0********22)" + ), + arrayOf( + "Not a Japanese number 08011112222333344445555", + "Not a Japanese number 08011112222333344445555" + ), + arrayOf( + "Not a Japanese number 1234508011112222", + "Not a Japanese number 1234508011112222" + ), arrayOf( "An avatar filename: file:///data/user/0/org.thoughtcrime.securesms/files/avatars/%2B447700900099", "An avatar filename: file:///data/user/0/org.thoughtcrime.securesms/files/avatars/%2B**********99" diff --git a/dependencies.gradle b/dependencies.gradle index 64f67b6fb0..4f402ce39b 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -96,7 +96,7 @@ dependencyResolutionManagement { // Google library('google-protobuf-javalite', 'com.google.protobuf:protobuf-javalite:3.11.4') - library('google-libphonenumber', 'com.googlecode.libphonenumber:libphonenumber:8.13.19') + library('google-libphonenumber', 'com.googlecode.libphonenumber:libphonenumber:8.13.23') library('google-play-services-maps', 'com.google.android.gms:play-services-maps:18.1.0') library('google-play-services-auth', 'com.google.android.gms:play-services-auth:20.3.0') library('google-play-services-wallet', 'com.google.android.gms:play-services-wallet:19.1.0') diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 0e07ce5f94..2a678eb4ad 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -3046,6 +3046,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + +