diff options
author | Martin Willi <martin@strongswan.org> | 2009-11-27 14:55:20 +0100 |
---|---|---|
committer | Martin Willi <martin@strongswan.org> | 2009-11-30 09:26:35 +0100 |
commit | c56d958243fa3fb4dbd26a89c36ce2c4367ebbe2 (patch) | |
tree | b2629bb63348c1f1d682ada029cb798d0899f17b /src | |
parent | 7868162b353d1c48e4428e92e00f31a426a09351 (diff) | |
download | strongswan-c56d958243fa3fb4dbd26a89c36ce2c4367ebbe2.tar.bz2 strongswan-c56d958243fa3fb4dbd26a89c36ce2c4367ebbe2.tar.xz |
Handle NOT_SUPPORTED or other errors properly in get_quintuplet
Diffstat (limited to 'src')
-rw-r--r-- | src/charon/sa/authenticators/eap/sim_manager.c | 14 |
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'", |