sim: Fix crash

aid_sessions was not properly reset to NULL when freed:

Program received signal SIGSEGV, Segmentation fault.
__ofono_watchlist_free (watchlist=0x0) at src/watch.c:91
91		for (l = watchlist->items; l; l = l->next) {
(gdb) bt
    func=0x4ceca0 <aid_session_free>, user_data=0x0)
    at /var/tmp/portage/dev-libs/glib-2.50.3-r1/work/glib-2.50.3/glib/gslist.c:878
    free_func=0x4ceca0 <aid_session_free>)
    at /var/tmp/portage/dev-libs/glib-2.50.3-r1/work/glib-2.50.3/glib/gslist.c:172
    at src/sim.c:2605
    user_data=<optimized out>) at plugins/phonesim.c:511
    func=0x49c8a0 <at_notify_call_callback>, user_data=0x7fffffffdbc0)
    at /var/tmp/portage/dev-libs/glib-2.50.3-r1/work/glib-2.50.3/glib/gslist.c:878
    chat=0x7b70b0) at gatchat/gatchat.c:417
This commit is contained in:
Denis Kenzior 2018-02-28 10:43:59 -06:00
parent b5ad34faab
commit 984d88492d
1 changed files with 3 additions and 1 deletions

View File

@ -2601,8 +2601,10 @@ static void sim_free_main_state(struct ofono_sim *sim)
if (sim->impi)
g_free(sim->impi);
if (sim->aid_sessions)
if (sim->aid_sessions) {
g_slist_free_full(sim->aid_sessions, aid_session_free);
sim->aid_sessions = NULL;
}
sim->initialized = false;
sim->wait_initialized = false;