From c0432d828d60ed27a0a229bc86bb80bbcbc3e9f8 Mon Sep 17 00:00:00 2001 From: Chris Eager Date: Fri, 30 Jan 2026 15:57:34 -0600 Subject: [PATCH] Handle MCC-only HLR responses --- .../telephony/hlrlookup/HlrLookupCarrierDataProvider.java | 2 +- .../hlrlookup/HlrLookupCarrierDataProviderTest.java | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/telephony/hlrlookup/HlrLookupCarrierDataProvider.java b/service/src/main/java/org/whispersystems/textsecuregcm/telephony/hlrlookup/HlrLookupCarrierDataProvider.java index b080ee49e..4980dbe52 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/telephony/hlrlookup/HlrLookupCarrierDataProvider.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/telephony/hlrlookup/HlrLookupCarrierDataProvider.java @@ -171,7 +171,7 @@ public class HlrLookupCarrierDataProvider implements CarrierDataProvider { static Optional mncFromMccMnc(@Nullable final String mccMnc) { // MNCs may be 2 or 3 digits, but always come after a 3-digit MCC return Optional.ofNullable(StringUtils.stripToNull(mccMnc)) - .map(trimmedMccMnc -> trimmedMccMnc.substring(3)); + .map(trimmedMccMnc -> StringUtils.stripToNull(trimmedMccMnc.substring(3))); } @VisibleForTesting diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/telephony/hlrlookup/HlrLookupCarrierDataProviderTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/telephony/hlrlookup/HlrLookupCarrierDataProviderTest.java index fafb2dd53..bce0d6da6 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/telephony/hlrlookup/HlrLookupCarrierDataProviderTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/telephony/hlrlookup/HlrLookupCarrierDataProviderTest.java @@ -187,7 +187,8 @@ class HlrLookupCarrierDataProviderTest { Arguments.argumentSet("Empty mccMnc string", "", Optional.empty()), Arguments.argumentSet("Blank mccMnc string", " ", Optional.empty()), Arguments.argumentSet("Two-digit MNC", "12345", Optional.of("123")), - Arguments.argumentSet("Three-digit MNC", "123456", Optional.of("123")) + Arguments.argumentSet("Three-digit MNC", "123456", Optional.of("123")), + Arguments.argumentSet("MCC-only", "123", Optional.of("123")) ); } @@ -204,7 +205,8 @@ class HlrLookupCarrierDataProviderTest { Arguments.argumentSet("Empty mccMnc string", "", Optional.empty()), Arguments.argumentSet("Blank mccMnc string", " ", Optional.empty()), Arguments.argumentSet("Two-digit MNC", "12345", Optional.of("45")), - Arguments.argumentSet("Three-digit MNC", "123456", Optional.of("456")) + Arguments.argumentSet("Three-digit MNC", "123456", Optional.of("456")), + Arguments.argumentSet("MCC-only", "123", Optional.empty()) ); }