From ae5885d54e21d7d5e45838572479db5835edabfa Mon Sep 17 00:00:00 2001 From: Cassie Date: Wed, 15 Nov 2017 17:11:17 -0800 Subject: [PATCH] Allow unknown mcc/mnc when constructing a CellIdentity from Parcel. Bug: 63984327 Test: Basic telephony sanity Change-Id: Ia7670b7cd49db244e7c8309419ea8d7b1280a7fa --- .../android/telephony/CellIdentityGsm.java | 19 +++++++++++++------ .../android/telephony/CellIdentityLte.java | 19 +++++++++++++------ .../android/telephony/CellIdentityWcdma.java | 19 +++++++++++++------ 3 files changed, 39 insertions(+), 18 deletions(-) diff --git a/telephony/java/android/telephony/CellIdentityGsm.java b/telephony/java/android/telephony/CellIdentityGsm.java index 6276626afae26..dc897a2e007e1 100644 --- a/telephony/java/android/telephony/CellIdentityGsm.java +++ b/telephony/java/android/telephony/CellIdentityGsm.java @@ -115,22 +115,29 @@ public final class CellIdentityGsm implements Parcelable { // for inbound parcels mBsic = (bsic == 0xFF) ? Integer.MAX_VALUE : bsic; + // Only allow INT_MAX if unknown string mcc/mnc if (mccStr == null || mccStr.matches("^[0-9]{3}$")) { mMccStr = mccStr; - } else if (mccStr.isEmpty()) { - // If the mccStr parsed from Parcel is empty, set it as null. + } else if (mccStr.isEmpty() || mccStr.equals(String.valueOf(Integer.MAX_VALUE))) { + // If the mccStr is empty or unknown, set it as null. mMccStr = null; } else { - throw new IllegalArgumentException("invalid MCC format"); + // TODO: b/69384059 Should throw IllegalArgumentException for the invalid MCC format + // after the bug got fixed. + mMccStr = null; + log("invalid MCC format: " + mccStr); } if (mncStr == null || mncStr.matches("^[0-9]{2,3}$")) { mMncStr = mncStr; - } else if (mncStr.isEmpty()) { - // If the mncStr parsed from Parcel is empty, set it as null. + } else if (mncStr.isEmpty() || mncStr.equals(String.valueOf(Integer.MAX_VALUE))) { + // If the mncStr is empty or unknown, set it as null. mMncStr = null; } else { - throw new IllegalArgumentException("invalid MNC format"); + // TODO: b/69384059 Should throw IllegalArgumentException for the invalid MNC format + // after the bug got fixed. + mMncStr = null; + log("invalid MNC format: " + mncStr); } mAlphaLong = alphal; diff --git a/telephony/java/android/telephony/CellIdentityLte.java b/telephony/java/android/telephony/CellIdentityLte.java index 74d2966b25bca..f234b0a4d911d 100644 --- a/telephony/java/android/telephony/CellIdentityLte.java +++ b/telephony/java/android/telephony/CellIdentityLte.java @@ -114,22 +114,29 @@ public final class CellIdentityLte implements Parcelable { mTac = tac; mEarfcn = earfcn; + // Only allow INT_MAX if unknown string mcc/mnc if (mccStr == null || mccStr.matches("^[0-9]{3}$")) { mMccStr = mccStr; - } else if (mccStr.isEmpty()) { - // If the mccStr parsed from Parcel is empty, set it as null. + } else if (mccStr.isEmpty() || mccStr.equals(String.valueOf(Integer.MAX_VALUE))) { + // If the mccStr is empty or unknown, set it as null. mMccStr = null; } else { - throw new IllegalArgumentException("invalid MCC format"); + // TODO: b/69384059 Should throw IllegalArgumentException for the invalid MCC format + // after the bug got fixed. + mMccStr = null; + log("invalid MCC format: " + mccStr); } if (mncStr == null || mncStr.matches("^[0-9]{2,3}$")) { mMncStr = mncStr; - } else if (mncStr.isEmpty()) { - // If the mncStr parsed from Parcel is empty, set it as null. + } else if (mncStr.isEmpty() || mncStr.equals(String.valueOf(Integer.MAX_VALUE))) { + // If the mncStr is empty or unknown, set it as null. mMncStr = null; } else { - throw new IllegalArgumentException("invalid MNC format"); + // TODO: b/69384059 Should throw IllegalArgumentException for the invalid MNC format + // after the bug got fixed. + mMncStr = null; + log("invalid MNC format: " + mncStr); } mAlphaLong = alphal; diff --git a/telephony/java/android/telephony/CellIdentityWcdma.java b/telephony/java/android/telephony/CellIdentityWcdma.java index 51b11aa82b9a3..1a461f20b131c 100644 --- a/telephony/java/android/telephony/CellIdentityWcdma.java +++ b/telephony/java/android/telephony/CellIdentityWcdma.java @@ -114,22 +114,29 @@ public final class CellIdentityWcdma implements Parcelable { mPsc = psc; mUarfcn = uarfcn; + // Only allow INT_MAX if unknown string mcc/mnc if (mccStr == null || mccStr.matches("^[0-9]{3}$")) { mMccStr = mccStr; - } else if (mccStr.isEmpty()) { - // If the mccStr parsed from Parcel is empty, set it as null. + } else if (mccStr.isEmpty() || mccStr.equals(String.valueOf(Integer.MAX_VALUE))) { + // If the mccStr is empty or unknown, set it as null. mMccStr = null; } else { - throw new IllegalArgumentException("invalid MCC format"); + // TODO: b/69384059 Should throw IllegalArgumentException for the invalid MCC format + // after the bug got fixed. + mMccStr = null; + log("invalid MCC format: " + mccStr); } if (mncStr == null || mncStr.matches("^[0-9]{2,3}$")) { mMncStr = mncStr; - } else if (mncStr.isEmpty()) { - // If the mncStr parsed from Parcel is empty, set it as null. + } else if (mncStr.isEmpty() || mncStr.equals(String.valueOf(Integer.MAX_VALUE))) { + // If the mncStr is empty or unknown, set it as null. mMncStr = null; } else { - throw new IllegalArgumentException("invalid MNC format"); + // TODO: b/69384059 Should throw IllegalArgumentException for the invalid MNC format + // after the bug got fixed. + mMncStr = null; + log("invalid MNC format: " + mncStr); } mAlphaLong = alphal;