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

Commit f841bf0e authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Strip trailing Fs when comparing ICCIDs"

parents a992cd0d c3f51d2a
Loading
Loading
Loading
Loading
+19 −3
Original line number Diff line number Diff line
@@ -135,6 +135,9 @@ public class UiccController extends Handler {

    private static final int INVALID_CARD_ID = TelephonyManager.INVALID_CARD_ID;

    // GSM SGP.02 section 2.2.2 states that the EID is always 32 digits long
    private static final int EID_LENGTH = 32;

    // SharedPreference key for saving the known card strings (ICCIDs and EIDs) ordered by card ID
    private static final String CARD_STRINGS = "card_strings";

@@ -560,18 +563,25 @@ public class UiccController extends Handler {

        UiccCard card = mUiccSlots[slotId].getUiccCard();
        if (card != null && (card.getCardState() == CardState.CARDSTATE_PRESENT)) {
            // getCardString() uses the raw ICCID, so we strip it manually
            addCardId(IccUtils.stripTrailingFs(card.getCardId()));
            String cardString = card.getCardId();
            addCardId(cardString);
        }

        if (DBG) log("Notifying IccChangedRegistrants");
        mIccChangedRegistrants.notifyRegistrants(new AsyncResult(null, index, null));
    }

    /**
     * Add a cardString to mCardStrings. If this is an ICCID, trailing Fs will be automatically
     * stripped.
     */
    private void addCardId(String cardString) {
        if (TextUtils.isEmpty(cardString)) {
            return;
        }
        if (cardString.length() < EID_LENGTH) {
            cardString = IccUtils.stripTrailingFs(cardString);
        }
        if (!mCardStrings.contains(cardString)) {
            mCardStrings.add(cardString);
            saveCardStrings();
@@ -580,9 +590,15 @@ public class UiccController extends Handler {

    /**
     * Converts the card string (the ICCID/EID, formerly named card ID) to the public int cardId.
     * Returns INVALID_CARD_ID if the card string does not map to a cardId.
     * If the given cardString is an ICCID, trailing Fs will be automatically stripped before trying
     * to match to a card ID.
     *
     * @return the matching cardId, or INVALID_CARD_ID if the card string does not map to a cardId
     */
    public int convertToPublicCardId(String cardString) {
        if (cardString.length() < EID_LENGTH) {
            cardString = IccUtils.stripTrailingFs(cardString);
        }
        int id = mCardStrings.indexOf(cardString);
        if (id == -1) {
            return INVALID_CARD_ID;
+1 −1
Original line number Diff line number Diff line
@@ -399,6 +399,7 @@ public class UiccSlot extends Handler {
        pw.println("UiccSlot:");
        pw.println(" mCi=" + mCi);
        pw.println(" mActive=" + mActive);
        pw.println(" mIsEuicc=" + mIsEuicc);
        pw.println(" mLastRadioState=" + mLastRadioState);
        pw.println(" mIccId=" + mIccId);
        pw.println(" mCardState=" + mCardState);
@@ -410,6 +411,5 @@ public class UiccSlot extends Handler {
        }
        pw.println();
        pw.flush();
        pw.flush();
    }
}
+9 −0
Original line number Diff line number Diff line
@@ -52,6 +52,8 @@ import com.android.internal.telephony.uicc.euicc.apdu.RequestProvider;
import com.android.internal.telephony.uicc.euicc.async.AsyncResultCallback;
import com.android.internal.telephony.uicc.euicc.async.AsyncResultHelper;

import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.List;

@@ -1352,4 +1354,11 @@ public class EuiccCard extends UiccCard {
            Rlog.d(LOG_TAG, message);
        }
    }

    @Override
    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
        super.dump(fd, pw, args);
        pw.println("EuiccCard:");
        pw.println(" mEid=" + mEid);
    }
}