Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 934e8aee authored by Nathan Harold's avatar Nathan Harold
Browse files

Range Check CarrierDisplayNameData Constructor

In order to prevent a future regression, add a
simple range check to the constructor of the
CarrierDisplayNameData class. This will ensure
that if there is an SPN set, then there must also
be a Data SPN set.

Bug: 358669494
Test: atest CarrierDisplayNameResolverTest\
      #testCarrierDisplayNameData_enforceNonNullDataSpn
Flag: EXEMPT bugfix
Change-Id: I08c89b75c8242699051e99604479ffdf2a2eb7e2
parent b879f682
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.internal.telephony.cdnr;

import android.os.Parcel;
import android.os.Parcelable;
import android.telephony.Rlog;

import java.util.Objects;

@@ -25,6 +26,9 @@ import java.util.Objects;
 * A container of carrier display name.
 */
public class CarrierDisplayNameData implements Parcelable {

    private static String LOG_TAG = "CarrierDisplayNameData";

    /** Service provider name. */
    private final String mSpn;

@@ -40,8 +44,18 @@ public class CarrierDisplayNameData implements Parcelable {
    /** {@code True} if display PLMN network name is required. */
    private final boolean mShowPlmn;

    private CarrierDisplayNameData(String spn, String dataSpn, boolean showSpn, String plmn,
            boolean showPlmn) {
    private CarrierDisplayNameData(
            String spn, String dataSpn, boolean showSpn, String plmn, boolean showPlmn) {
        final String logString = "Data SPN must be provided if SPN is provided";
        if (spn != null && dataSpn == null) {
            Rlog.e(LOG_TAG, logString);
            if (android.os.Build.isDebuggable()) {
                throw new IllegalArgumentException(logString);
            } else {
                dataSpn = spn;
            }
        }

        this.mSpn = spn;
        this.mDataSpn = dataSpn;
        this.mShowSpn = showSpn;
+13 −0
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ package com.android.internal.telephony;

import static com.google.common.truth.Truth.assertThat;

import static org.junit.Assert.fail;

import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.doReturn;

@@ -36,6 +38,7 @@ import com.android.internal.telephony.uicc.UiccCardApplication;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import org.mockito.Mockito;

public class CarrierDisplayNameResolverTest extends TelephonyTest {
@@ -271,4 +274,14 @@ public class CarrierDisplayNameResolverTest extends TelephonyTest {
        assertThat(data.shouldShowPlmn()).isTrue();
        assertThat(data.getPlmn()).isEqualTo(HOME_PLMN_NUMERIC);
    }

    @Test
    public void testCarrierDisplayNameData_enforceNonNullDataSpn() {
        try {
            CarrierDisplayNameData cdnd = new CarrierDisplayNameData.Builder()
                    .setSpn("testSpn").build();
            fail("Expected IAE");
        } catch(IllegalArgumentException expected) {
        }
    }
}