summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2011-01-10 16:21:16 -0600
committerDenis Kenzior <denkenz@gmail.com>2011-01-10 16:21:16 -0600
commit94c104b25f9f6928154c53307b4c3dbf217a3aaf (patch)
tree8cb5496fda124456b8a26dcc41d9916d19c8e38a
parent55d47dcac131997a3ebce4a1a80f729735deee4d (diff)
downloadofono-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.c17
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)