Loading src/java/com/android/internal/telephony/uicc/IccRecords.java +13 −1 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.util.Arrays; import java.util.HashMap; import java.util.Objects; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; Loading Loading @@ -459,7 +460,18 @@ public abstract class IccRecords extends Handler implements IccConstants { * @param imsi */ public void setImsi(String imsi) { mImsi = imsi; // Remove trailing F's if present in IMSI. mImsi = IccUtils.stripTrailingFs(imsi); if (!Objects.equals(mImsi, imsi)) { loge("Invalid IMSI padding digits received."); } if (TextUtils.isEmpty(mImsi)) mImsi = null; if (mImsi != null && !mImsi.matches("[0-9]+")) { loge("Invalid non-numeric IMSI digits received."); mImsi = null; } mImsiReadyRegistrants.notifyRegistrants(); } Loading src/java/com/android/internal/telephony/uicc/SIMRecords.java +14 −3 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Arrays; import java.util.Objects; /** * {@hide} Loading @@ -59,7 +60,6 @@ public class SIMRecords extends IccRecords { private int mCallForwardingStatus; /** * States only used by getSpnFsm FSM */ Loading Loading @@ -664,7 +664,18 @@ public class SIMRecords extends IccRecords { break; } mImsi = (String) ar.result; String imsi = (String) ar.result; // Remove trailing F's if present in IMSI. mImsi = IccUtils.stripTrailingFs(imsi); if (!Objects.equals(mImsi, imsi)) { loge("Invalid IMSI padding digits received."); } if (mImsi != null && !mImsi.matches("[0-9]+")) { loge("Invalid non-numeric IMSI digits received."); mImsi = null; } // IMSI (MCC+MNC+MSIN) is at least 6 digits, but not more // than 15 (and usually 15). Loading @@ -680,7 +691,7 @@ public class SIMRecords extends IccRecords { + Rlog.pii(LOG_TAG, mImsi.substring(6))); } String imsi = getIMSI(); imsi = getIMSI(); if (((mMncLength == UNKNOWN) || (mMncLength == 2)) && ((imsi != null) && (imsi.length() >= 6))) { Loading tests/telephonytests/src/com/android/internal/telephony/uicc/IccRecordsTest.java +19 −7 Original line number Diff line number Diff line Loading @@ -29,16 +29,16 @@ package com.android.internal.telephony.uicc; import org.mockito.Mock; import static org.junit.Assert.*; import static org.mockito.Mockito.*; import org.mockito.MockitoAnnotations; import android.os.HandlerThread; import com.android.internal.telephony.TelephonyTest; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.android.internal.telephony.TelephonyTest; import android.content.Context; import android.os.HandlerThread; public class IccRecordsTest extends TelephonyTest { Loading Loading @@ -79,5 +79,17 @@ public class IccRecordsTest extends TelephonyTest { } @Test public void testSetImsiInvalid() { mIccRecords.setImsi("0123456789FFFFFF"); assertEquals(mIccRecords.getIMSI(), "0123456789"); mIccRecords.setImsi("0123456789ffffff"); assertEquals(mIccRecords.getIMSI(), "0123456789"); mIccRecords.setImsi("ffffff"); assertEquals(mIccRecords.getIMSI(), null); mIccRecords.setImsi("12F34F567890"); assertEquals(mIccRecords.getIMSI(), null); mIccRecords.setImsi("123456ABCDEF"); assertEquals(mIccRecords.getIMSI(), null); } } Loading
src/java/com/android/internal/telephony/uicc/IccRecords.java +13 −1 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.util.Arrays; import java.util.HashMap; import java.util.Objects; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; Loading Loading @@ -459,7 +460,18 @@ public abstract class IccRecords extends Handler implements IccConstants { * @param imsi */ public void setImsi(String imsi) { mImsi = imsi; // Remove trailing F's if present in IMSI. mImsi = IccUtils.stripTrailingFs(imsi); if (!Objects.equals(mImsi, imsi)) { loge("Invalid IMSI padding digits received."); } if (TextUtils.isEmpty(mImsi)) mImsi = null; if (mImsi != null && !mImsi.matches("[0-9]+")) { loge("Invalid non-numeric IMSI digits received."); mImsi = null; } mImsiReadyRegistrants.notifyRegistrants(); } Loading
src/java/com/android/internal/telephony/uicc/SIMRecords.java +14 −3 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Arrays; import java.util.Objects; /** * {@hide} Loading @@ -59,7 +60,6 @@ public class SIMRecords extends IccRecords { private int mCallForwardingStatus; /** * States only used by getSpnFsm FSM */ Loading Loading @@ -664,7 +664,18 @@ public class SIMRecords extends IccRecords { break; } mImsi = (String) ar.result; String imsi = (String) ar.result; // Remove trailing F's if present in IMSI. mImsi = IccUtils.stripTrailingFs(imsi); if (!Objects.equals(mImsi, imsi)) { loge("Invalid IMSI padding digits received."); } if (mImsi != null && !mImsi.matches("[0-9]+")) { loge("Invalid non-numeric IMSI digits received."); mImsi = null; } // IMSI (MCC+MNC+MSIN) is at least 6 digits, but not more // than 15 (and usually 15). Loading @@ -680,7 +691,7 @@ public class SIMRecords extends IccRecords { + Rlog.pii(LOG_TAG, mImsi.substring(6))); } String imsi = getIMSI(); imsi = getIMSI(); if (((mMncLength == UNKNOWN) || (mMncLength == 2)) && ((imsi != null) && (imsi.length() >= 6))) { Loading
tests/telephonytests/src/com/android/internal/telephony/uicc/IccRecordsTest.java +19 −7 Original line number Diff line number Diff line Loading @@ -29,16 +29,16 @@ package com.android.internal.telephony.uicc; import org.mockito.Mock; import static org.junit.Assert.*; import static org.mockito.Mockito.*; import org.mockito.MockitoAnnotations; import android.os.HandlerThread; import com.android.internal.telephony.TelephonyTest; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.android.internal.telephony.TelephonyTest; import android.content.Context; import android.os.HandlerThread; public class IccRecordsTest extends TelephonyTest { Loading Loading @@ -79,5 +79,17 @@ public class IccRecordsTest extends TelephonyTest { } @Test public void testSetImsiInvalid() { mIccRecords.setImsi("0123456789FFFFFF"); assertEquals(mIccRecords.getIMSI(), "0123456789"); mIccRecords.setImsi("0123456789ffffff"); assertEquals(mIccRecords.getIMSI(), "0123456789"); mIccRecords.setImsi("ffffff"); assertEquals(mIccRecords.getIMSI(), null); mIccRecords.setImsi("12F34F567890"); assertEquals(mIccRecords.getIMSI(), null); mIccRecords.setImsi("123456ABCDEF"); assertEquals(mIccRecords.getIMSI(), null); } }