From d90cfdd71cb9eb2b533a20e4aea6bbf79e79fd2e Mon Sep 17 00:00:00 2001 From: Antara Borwankar Date: Thu, 19 Dec 2019 18:27:49 +0530 Subject: [PATCH] sim: handling crash in error scenario for SIM PIN query In case of error in sim_pin_query_cb function. pin_type is set to -1. This is causing segmentation fault in function sim_passwd_name due to invalid index pin_type = -1. Fixing this issue by handling error case before calling sim_passwd_name function. --- src/sim.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/sim.c b/src/sim.c index 535ccbca..33e1245f 100644 --- a/src/sim.c +++ b/src/sim.c @@ -3201,7 +3201,7 @@ static void sim_pin_query_cb(const struct ofono_error *error, DBusConnection *conn = ofono_dbus_get_connection(); const char *path = __ofono_atom_get_path(sim->atom); struct cached_pin *cpins = pin_cache_lookup(sim->iccid); - const char *pin_name = sim_passwd_name(pin_type); + const char *pin_name; char **locked_pins; gboolean lock_changed; @@ -3212,6 +3212,8 @@ static void sim_pin_query_cb(const struct ofono_error *error, return; } + pin_name = sim_passwd_name(pin_type); + if (sim->pin_type != pin_type) { sim->pin_type = pin_type;