aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2019-12-23 14:16:45 +0100
committerAleksander Morgado <aleksander@aleksander.es>2020-01-30 11:59:14 +0100
commit517862be35559a9f12dd424dd75a1a833d4648e0 (patch)
tree5d587ad22f3163a0f6d60de48c0cf859ca84e6f6
parentd5b30be6de9b8282f2f03b8201fc097accaf27cb (diff)
broadband-modem: plug memleak if mm_parse_csim_response() fails
The GError would be leaking.
-rw-r--r--src/mm-broadband-modem.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c
index e88be07c..cba9e31a 100644
--- a/src/mm-broadband-modem.c
+++ b/src/mm-broadband-modem.c
@@ -1508,6 +1508,7 @@ csim_ready (MMBaseModem *self,
LoadUnlockRetriesContext *ctx;
const gchar *response;
GError *error = NULL;
+ gint val;
ctx = g_task_get_task_data (task);
@@ -1516,19 +1517,22 @@ csim_ready (MMBaseModem *self,
mm_dbg ("Couldn't load retry count for lock '%s': %s",
mm_modem_lock_get_string (unlock_retries_map[ctx->i].lock),
error->message);
- g_error_free (error);
- } else {
- gint val;
+ goto next;
+ }
- val = mm_parse_csim_response (response, &error);
- if (val < 0) {
- mm_warn ("Parse error in step %d: %s.", ctx->i, error->message);
- mm_dbg ("Couldn't parse retry count value for lock '%s'",
- mm_modem_lock_get_string (unlock_retries_map[ctx->i].lock));
- } else
- mm_unlock_retries_set (ctx->retries, unlock_retries_map[ctx->i].lock, val);
+ val = mm_parse_csim_response (response, &error);
+ if (val < 0) {
+ mm_dbg ("Couldn't parse retry count value for lock '%s': %s",
+ mm_modem_lock_get_string (unlock_retries_map[ctx->i].lock),
+ error->message);
+ goto next;
}
+ mm_unlock_retries_set (ctx->retries, unlock_retries_map[ctx->i].lock, val);
+
+next:
+ g_clear_error (&error);
+
/* Go to next lock value */
ctx->i++;
load_unlock_retries_context_step (task);