aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/charon/sa/authenticators/eap/sim_manager.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/charon/sa/authenticators/eap/sim_manager.c b/src/charon/sa/authenticators/eap/sim_manager.c
index 4fbb16e8e..940b25d47 100644
--- a/src/charon/sa/authenticators/eap/sim_manager.c
+++ b/src/charon/sa/authenticators/eap/sim_manager.c
@@ -102,12 +102,18 @@ static status_t card_get_quintuplet(private_sim_manager_t *this,
while (enumerator->enumerate(enumerator, &card))
{
status = card->get_quintuplet(card, id, rand, autn, ck, ik, res, res_len);
- if (status != FAILED)
+ switch (status)
{ /* try next on error, but not on INVALID_STATE */
- enumerator->destroy(enumerator);
- return status;
+ case SUCCESS:
+ case INVALID_STATE:
+ enumerator->destroy(enumerator);
+ return status;
+ case NOT_SUPPORTED:
+ case FAILED:
+ default:
+ tried++;
+ continue;
}
- tried++;
}
enumerator->destroy(enumerator);
DBG1(DBG_IKE, "tried %d SIM cards, but none has quintuplets for '%Y'",