Fix: updateExternalState() does not update SIM state to PERM_DISABLED
setExternalState() shall be called with State.PERM_DISABLED if the state
of PIN1 is PinState.PINSTATE_ENABLED_PERM_BLOCKED. Refer to the same
logic in processLockedState().
Bug: 29864172
Change-Id: I68f6c62b3713520431177b041c23027e94a5d66b
diff --git a/src/java/com/android/internal/telephony/uicc/IccCardProxy.java b/src/java/com/android/internal/telephony/uicc/IccCardProxy.java
index ce8a671..19032c1 100644
--- a/src/java/com/android/internal/telephony/uicc/IccCardProxy.java
+++ b/src/java/com/android/internal/telephony/uicc/IccCardProxy.java
@@ -419,6 +419,11 @@
setExternalState(State.PIN_REQUIRED);
break;
case APPSTATE_PUK:
+ PinState pin1State = mUiccApplication.getPin1State();
+ if (pin1State.isPermBlocked()) {
+ setExternalState(State.PERM_DISABLED);
+ return;
+ }
setExternalState(State.PUK_REQUIRED);
break;
case APPSTATE_SUBSCRIPTION_PERSO: