diff options
author | Denis Kenzior <denkenz@gmail.com> | 2011-01-10 16:21:16 -0600 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2011-01-10 16:21:16 -0600 |
commit | 94c104b25f9f6928154c53307b4c3dbf217a3aaf (patch) | |
tree | 8cb5496fda124456b8a26dcc41d9916d19c8e38a | |
parent | 55d47dcac131997a3ebce4a1a80f729735deee4d (diff) | |
download | ofono-94c104b25f9f6928154c53307b4c3dbf217a3aaf.tar.bz2 |
sim: Fix missing return in the atmodem driver
In some circumstances it was possible to call the callback with both
failure and success
-rw-r--r-- | drivers/atmodem/sim.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/drivers/atmodem/sim.c b/drivers/atmodem/sim.c index dbf95bef..113b8350 100644 --- a/drivers/atmodem/sim.c +++ b/drivers/atmodem/sim.c @@ -524,17 +524,18 @@ static void at_pin_retries_query(struct ofono_sim *sim, ofono_sim_pin_retries_cb_t cb, void *data) { struct sim_data *sd = ofono_sim_get_data(sim); + struct cb_data *cbd; int retries[OFONO_SIM_PASSWORD_INVALID]; int i; DBG(""); - if (sd->vendor == OFONO_VENDOR_HUAWEI) { - struct cb_data *cbd = cb_data_new(cb, data); + switch (sd->vendor) { + case OFONO_VENDOR_HUAWEI: + cbd = cb_data_new(cb, data); if (cbd == NULL) { CALLBACK_WITH_FAILURE(cb, NULL, data); - return; } @@ -545,12 +546,14 @@ static void at_pin_retries_query(struct ofono_sim *sim, g_free(cbd); CALLBACK_WITH_FAILURE(cb, NULL, data); - } + break; - for(i = 0; i < OFONO_SIM_PASSWORD_INVALID; i++) - retries[i] = -1; + default: + for(i = 0; i < OFONO_SIM_PASSWORD_INVALID; i++) + retries[i] = -1; - CALLBACK_WITH_SUCCESS(cb, retries, data); + CALLBACK_WITH_SUCCESS(cb, retries, data); + } } static void at_cpin_cb(gboolean ok, GAtResult *result, gpointer user_data) |