From bea80d6a80c36843af2e6cd95891a404853b3669 Mon Sep 17 00:00:00 2001 From: Wootak Jung Date: Mon, 20 Jun 2016 13:23:13 +0900 Subject: [PATCH] Fix to dereference NULL pointer Change-Id: I78aac2169e62d6f317770311db65e272b8c7ec34 --- packaging/libtcore.spec | 2 +- src/core_object/co_phonebook.c | 8 ++++++++ src/core_object/co_ps.c | 22 ++++++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/packaging/libtcore.spec b/packaging/libtcore.spec index 852f396..51d641e 100644 --- a/packaging/libtcore.spec +++ b/packaging/libtcore.spec @@ -1,6 +1,6 @@ %define major 0 %define minor 3 -%define patchlevel 4 +%define patchlevel 5 Name: libtcore Version: %{major}.%{minor}.%{patchlevel} diff --git a/src/core_object/co_phonebook.c b/src/core_object/co_phonebook.c index 6b38ece..d82e77b 100644 --- a/src/core_object/co_phonebook.c +++ b/src/core_object/co_phonebook.c @@ -119,6 +119,8 @@ gboolean tcore_phonebook_get_status(CoreObject *o) struct private_object_data *po = NULL; CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PHONEBOOK, FALSE); po = tcore_object_ref_object(o); + if (!po) + return FALSE; return po->b_init; } @@ -128,6 +130,8 @@ gboolean tcore_phonebook_set_status(CoreObject *o, gboolean b_init) struct private_object_data *po = NULL; CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PHONEBOOK, FALSE); po = tcore_object_ref_object(o); + if (!po) + return FALSE; po->b_init = b_init; @@ -185,6 +189,8 @@ enum tel_phonebook_type tcore_phonebook_get_selected_type(CoreObject *o) struct private_object_data *po = NULL; CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PHONEBOOK, PB_TYPE_UNKNOWNN); po = tcore_object_ref_object(o); + if (!po) + return PB_TYPE_UNKNOWNN; return po->selected; } @@ -194,6 +200,8 @@ gboolean tcore_phonebook_set_selected_type(CoreObject *o, enum tel_phonebook_typ struct private_object_data *po = NULL; CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PHONEBOOK, FALSE); po = tcore_object_ref_object(o); + if (!po) + return FALSE; po->selected = t; diff --git a/src/core_object/co_ps.c b/src/core_object/co_ps.c index e4671ae..86afd43 100644 --- a/src/core_object/co_ps.c +++ b/src/core_object/co_ps.c @@ -111,6 +111,8 @@ static gboolean _ps_is_active_context(CoreObject *o, CoreObject *ps_context) CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PS, FALSE); po = tcore_object_ref_object(o); + if (!po) + return FALSE; for (idx_cid = 1; idx_cid <= po->num_of_pdn; idx_cid++) { if (po->cid[idx_cid].cid == 0) @@ -153,6 +155,8 @@ static gboolean _ps_is_duplicated_apn(CoreObject *o, CoreObject *ps_context) CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PS, FALSE); po = tcore_object_ref_object(o); + if (!po) + return FALSE; t_apn = tcore_context_get_apn(ps_context); for (idx_cid = 1; idx_cid <= po->num_of_pdn; idx_cid++) { @@ -353,6 +357,9 @@ unsigned int tcore_ps_set_cid_active(CoreObject *o, unsigned int cid, unsigned i return 0; po = tcore_object_ref_object(o); + if (!po) + return 0; + for (idx_cid = 1; idx_cid <= po->num_of_pdn; idx_cid++) { if (po->cid[idx_cid].cid == cid) { po->cid[idx_cid].active = enable; @@ -373,6 +380,9 @@ unsigned int tcore_ps_get_cid_active(CoreObject *o, unsigned int cid) return 0; po = tcore_object_ref_object(o); + if (!po) + return 0; + for (idx_cid = 1; idx_cid <= po->num_of_pdn; idx_cid++) if (po->cid[idx_cid].cid == cid) return po->cid[idx_cid].active; @@ -389,6 +399,8 @@ GSList *tcore_ps_get_active_cids(CoreObject *o) CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PS, NULL); po = tcore_object_ref_object(o); + if (!po) + return NULL; for (idx_cid = 1; idx_cid <= po->num_of_pdn; idx_cid++) if (po->cid[idx_cid].active) @@ -407,6 +419,9 @@ unsigned int tcore_ps_set_cid_connected(CoreObject *o, unsigned int cid, unsigne return 0; po = tcore_object_ref_object(o); + if (!po) + return 0; + for (idx_cid = 1; idx_cid <= po->num_of_pdn; idx_cid++) { if (po->cid[idx_cid].cid == cid) { po->cid[idx_cid].connected = connected; @@ -427,6 +442,9 @@ unsigned int tcore_ps_get_cid_connected(CoreObject *o, unsigned int cid) return 0; po = tcore_object_ref_object(o); + if (!po) + return 0; + for (idx_cid = 1; idx_cid <= po->num_of_pdn; idx_cid++) if (po->cid[idx_cid].cid == cid) return po->cid[idx_cid].connected; @@ -443,6 +461,8 @@ GSList *tcore_ps_get_connected_cids(CoreObject *o) CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PS, NULL); po = tcore_object_ref_object(o); + if (!po) + return NULL; for (idx_cid = 1; idx_cid <= po->num_of_pdn; idx_cid++) if (po->cid[idx_cid].connected) @@ -459,6 +479,8 @@ unsigned int tcore_ps_is_active_apn(CoreObject *o, const char *apn) CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PS, 0); po = tcore_object_ref_object(o); + if (!po) + return 0; for (idx_cid = 1; idx_cid <= po->num_of_pdn; idx_cid++) { if (po->cid[idx_cid].cid == 0) -- 2.7.4