From: Martin Willi Date: Fri, 27 Nov 2009 13:55:20 +0000 (+0100) Subject: Handle NOT_SUPPORTED or other errors properly in get_quintuplet X-Git-Tag: 4.3.6~164 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c56d958243fa3fb4dbd26a89c36ce2c4367ebbe2;p=thirdparty%2Fstrongswan.git Handle NOT_SUPPORTED or other errors properly in get_quintuplet --- diff --git a/src/charon/sa/authenticators/eap/sim_manager.c b/src/charon/sa/authenticators/eap/sim_manager.c index 4fbb16e8ef..940b25d477 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'",