From 97d0825ce41b2294d1fa12d87903a670117768b7 Mon Sep 17 00:00:00 2001 From: Wootak Jung Date: Tue, 8 Dec 2015 14:02:25 +0900 Subject: [PATCH] Add dbus conf file & Fix daemon crash issue - uncorrect dereferencing to p_cynara Change-Id: I67c5067290f69b7c480d41a26ea01903c8d007a9 --- include/ps_common.h | 15 +++++++++++++++ packaging/tel-plugin-packetservice.spec | 6 +++++- packaging/tel-plugin-ps.conf | 14 ++++++++++++++ src/ps_context.c | 21 ++++++++++++++------- src/ps_main.c | 15 --------------- src/ps_master.c | 3 ++- src/ps_modem.c | 18 ++++++++++++------ 7 files changed, 62 insertions(+), 30 deletions(-) create mode 100644 packaging/tel-plugin-ps.conf diff --git a/include/ps_common.h b/include/ps_common.h index 18b7f46..aa84a55 100644 --- a/include/ps_common.h +++ b/include/ps_common.h @@ -114,6 +114,21 @@ #define PS_CDMA_DUMMY_PROFILE_IDX 0 #define PS_CDMA_DUMMY_PROFILE_PLMN "00000" +/* + * PS plugin Private information + */ +typedef struct { + GDBusConnection *conn; /* DBUS connection */ + guint bus_id; /* Packet service BUS ID */ + + /* Parent plug-in */ + TcorePlugin *p; + + /* List of masters */ + GSList *master; + cynara *p_cynara; +} PsPrivInfo; + typedef enum { PS_SUBS_PRIMARY, PS_SUBS_SECONDARY, diff --git a/packaging/tel-plugin-packetservice.spec b/packaging/tel-plugin-packetservice.spec index bad5679..8cfa804 100644 --- a/packaging/tel-plugin-packetservice.spec +++ b/packaging/tel-plugin-packetservice.spec @@ -1,6 +1,6 @@ %define major 0 %define minor 3 -%define patchlevel 15 +%define patchlevel 16 Name: tel-plugin-packetservice Version: %{major}.%{minor}.%{patchlevel} @@ -9,6 +9,7 @@ License: Apache-2.0 Summary: Telephony Packet Service library Group: System/Libraries Source0: tel-plugin-packetservice-%{version}.tar.gz +Source1: tel-plugin-ps.conf BuildRequires: cmake BuildRequires: python BuildRequires: python-xml @@ -108,6 +109,8 @@ fi %install %make_install mkdir -p %{buildroot}%{_datadir}/license +mkdir -p %{buildroot}/etc/dbus-1/system.d/ +cp %{SOURCE1} %{buildroot}/etc/dbus-1/system.d/tel-plugin-ps.conf %files %manifest tel-plugin-packetservice.manifest @@ -121,3 +124,4 @@ mkdir -p %{buildroot}%{_datadir}/license %{_sysconfdir}/opt/upgrade/* %{_libdir}/telephony/plugins/ps-plugin* %{_datadir}/license/tel-plugin-packetservice +/etc/dbus-1/system.d/tel-plugin-ps.conf diff --git a/packaging/tel-plugin-ps.conf b/packaging/tel-plugin-ps.conf new file mode 100644 index 0000000..6c36640 --- /dev/null +++ b/packaging/tel-plugin-ps.conf @@ -0,0 +1,14 @@ + + + + + + + + + + + + + diff --git a/src/ps_context.c b/src/ps_context.c index aec313c..9d46758 100644 --- a/src/ps_context.c +++ b/src/ps_context.c @@ -2700,7 +2700,8 @@ static gboolean on_context_get_properties(PacketServiceContext *obj_context, GVariantBuilder property; ps_context_t *pscontext = user_data; TcorePlugin *p = (pscontext) ? pscontext->plg : NULL; - cynara *p_cynara = tcore_plugin_ref_user_data(p); + PsPrivInfo *priv_info = tcore_plugin_ref_user_data(p); + cynara *p_cynara = (priv_info) ? priv_info->p_cynara : NULL; if (!ps_util_check_access_control(p_cynara, invocation, AC_PS_PUBLIC, "r")) return TRUE; @@ -2719,7 +2720,8 @@ static gboolean on_context_get_profile(PacketServiceContext *obj_context, GVariantBuilder profile; ps_context_t *pscontext = user_data; TcorePlugin *p = (pscontext) ? pscontext->plg : NULL; - cynara *p_cynara = tcore_plugin_ref_user_data(p); + PsPrivInfo *priv_info = tcore_plugin_ref_user_data(p); + cynara *p_cynara = (priv_info) ? priv_info->p_cynara : NULL; if (!ps_util_check_access_control(p_cynara, invocation, AC_PS_PUBLIC, "r")) return TRUE; @@ -2748,7 +2750,8 @@ static gboolean on_context_handle_activate(PacketServiceContext *obj_context, ps_context_t *pscontext = user_data; TcorePlugin *p = (pscontext) ? pscontext->plg : NULL; - cynara *p_cynara = tcore_plugin_ref_user_data(p); + PsPrivInfo *priv_info = tcore_plugin_ref_user_data(p); + cynara *p_cynara = (priv_info) ? priv_info->p_cynara : NULL; if (!ps_util_check_access_control(p_cynara, invocation, AC_PS_PRIVATE, "w")) return TRUE; @@ -2879,7 +2882,8 @@ static gboolean on_context_handle_deactiavte(PacketServiceContext *obj_context, int context_state = 0; ps_context_t *pscontext = user_data; TcorePlugin *p = (pscontext) ? pscontext->plg : NULL; - cynara *p_cynara = tcore_plugin_ref_user_data(p); + PsPrivInfo *priv_info = tcore_plugin_ref_user_data(p); + cynara *p_cynara = (priv_info) ? priv_info->p_cynara : NULL; if (!ps_util_check_access_control(p_cynara, invocation, AC_PS_PRIVATE, "w")) return TRUE; @@ -2938,7 +2942,8 @@ static gboolean on_context_set_default_connection(PacketServiceContext *obj_cont gpointer cur_default_ctx = NULL; ps_context_t *pscontext = user_data; TcorePlugin *p = (pscontext) ? pscontext->plg : NULL; - cynara *p_cynara = tcore_plugin_ref_user_data(p); + PsPrivInfo *priv_info = tcore_plugin_ref_user_data(p); + cynara *p_cynara = (priv_info) ? priv_info->p_cynara : NULL; CoreObject *co_network; if (!ps_util_check_access_control(p_cynara, invocation, AC_PS_PROFILE, "w")) @@ -3026,7 +3031,8 @@ static gboolean on_context_modify_profile(PacketServiceContext *obj_context, int context_state = 0; ps_context_t *context = user_data; TcorePlugin *p = (context) ? context->plg : NULL; - cynara *p_cynara = tcore_plugin_ref_user_data(p); + PsPrivInfo *priv_info = tcore_plugin_ref_user_data(p); + cynara *p_cynara = (priv_info) ? priv_info->p_cynara : NULL; CoreObject *co_network = _ps_service_ref_co_network(_ps_context_ref_service(context)); GHashTable *profile_property = NULL; @@ -3078,7 +3084,8 @@ static gboolean on_context_remove_profile(PacketServiceContext *obj_context, ps_service_t *service = _ps_context_ref_service(context); CoreObject *co_network = _ps_service_ref_co_network(service); TcorePlugin *p = (context) ? context->plg : NULL; - cynara *p_cynara = tcore_plugin_ref_user_data(p); + PsPrivInfo *priv_info = tcore_plugin_ref_user_data(p); + cynara *p_cynara = (priv_info) ? priv_info->p_cynara : NULL; if (!ps_util_check_access_control(p_cynara, invocation, AC_PS_PROFILE, "w")) return TRUE; diff --git a/src/ps_main.c b/src/ps_main.c index 8acb2cd..04cf18d 100644 --- a/src/ps_main.c +++ b/src/ps_main.c @@ -30,21 +30,6 @@ #include "ps_main.h" #include -/* - * PS plugin Private information - */ -typedef struct { - GDBusConnection *conn; /* DBUS connection */ - guint bus_id; /* Packet service BUS ID */ - - /* Parent plug-in */ - TcorePlugin *p; - - /* List of masters */ - GSList *master; - cynara *p_cynara; -} PsPrivInfo; - static void __packet_service_cleanup(PsPrivInfo *priv_info) { /* Sanity Check */ diff --git a/src/ps_master.c b/src/ps_master.c index 7ffdf1f..be19584 100644 --- a/src/ps_master.c +++ b/src/ps_master.c @@ -580,7 +580,8 @@ static gboolean on_master_get_modems(PacketServiceMaster *obj_master, gpointer key, value; ps_master_t *master = user_data; TcorePlugin *p = (master) ? master->plg : NULL; - cynara *p_cynara = tcore_plugin_ref_user_data(p); + PsPrivInfo *priv_info = tcore_plugin_ref_user_data(p); + cynara *p_cynara = (priv_info) ? priv_info->p_cynara : NULL; if (!ps_util_check_access_control(p_cynara, invocation, AC_PS_PUBLIC, "r")) return TRUE; diff --git a/src/ps_modem.c b/src/ps_modem.c index d6380cc..0926a61 100644 --- a/src/ps_modem.c +++ b/src/ps_modem.c @@ -1038,7 +1038,8 @@ static gboolean on_modem_get_properties(PacketServiceModem *obj_modem, GVariantBuilder properties; ps_modem_t *modem = user_data; TcorePlugin *p = (modem) ? modem->plg : NULL; - cynara *p_cynara = tcore_plugin_ref_user_data(p); + PsPrivInfo *priv_info = tcore_plugin_ref_user_data(p); + cynara *p_cynara = (priv_info) ? priv_info->p_cynara : NULL; if (!ps_util_check_access_control(p_cynara, invocation, AC_PS_PUBLIC, "r")) return TRUE; @@ -1062,7 +1063,8 @@ static gboolean on_modem_get_services(PacketServiceModem *obj_modem, ps_modem_t *modem = user_data; CoreObject *co_modem = _ps_modem_ref_co_modem(modem); TcorePlugin *p = (modem) ? modem->plg : NULL; - cynara *p_cynara = tcore_plugin_ref_user_data(p); + PsPrivInfo *priv_info = tcore_plugin_ref_user_data(p); + cynara *p_cynara = (priv_info) ? priv_info->p_cynara : NULL; if (!ps_util_check_access_control(p_cynara, invocation, AC_PS_PUBLIC, "r")) return TRUE; @@ -1106,7 +1108,8 @@ static gboolean on_modem_go_dormant_all(PacketServiceModem *obj_modem, gpointer key, value; ps_modem_t *modem = user_data; TcorePlugin *p = (modem) ? modem->plg : NULL; - cynara *p_cynara = tcore_plugin_ref_user_data(p); + PsPrivInfo *priv_info = tcore_plugin_ref_user_data(p); + cynara *p_cynara = (priv_info) ? priv_info->p_cynara : NULL; if (!ps_util_check_access_control(p_cynara, invocation, AC_PS_PRIVATE, "w")) return TRUE; @@ -1141,7 +1144,8 @@ static gboolean on_modem_get_profile_list(PacketServiceModem *obj_modem, ps_modem_t *modem = user_data; CoreObject *co_modem = _ps_modem_ref_co_modem(modem); TcorePlugin *p = (modem) ? modem->plg : NULL; - cynara *p_cynara = tcore_plugin_ref_user_data(p); + PsPrivInfo *priv_info = tcore_plugin_ref_user_data(p); + cynara *p_cynara = (priv_info) ? priv_info->p_cynara : NULL; if (!ps_util_check_access_control(p_cynara, invocation, AC_PS_PUBLIC, "r")) return TRUE; @@ -1206,7 +1210,8 @@ static gboolean on_modem_add_profile(PacketServiceModem *obj_modem, CoreObject *co_modem = _ps_modem_ref_co_modem(modem); GHashTable *profile_property = NULL; TcorePlugin *p = (modem) ? modem->plg : NULL; - cynara *p_cynara = tcore_plugin_ref_user_data(p); + PsPrivInfo *priv_info = tcore_plugin_ref_user_data(p); + cynara *p_cynara = (priv_info) ? priv_info->p_cynara : NULL; if (!ps_util_check_access_control(p_cynara, invocation, AC_PS_PROFILE, "w")) return TRUE; @@ -1314,7 +1319,8 @@ static gboolean on_modem_reset_profile(PacketServiceModem *obj_modem, CoreObject *co_ps; int state; TcorePlugin *p = (modem) ? modem->plg : NULL; - cynara *p_cynara = tcore_plugin_ref_user_data(p); + PsPrivInfo *priv_info = tcore_plugin_ref_user_data(p); + cynara *p_cynara = (priv_info) ? priv_info->p_cynara : NULL; if (!ps_util_check_access_control(p_cynara, invocation, AC_PS_PROFILE, "w")) return TRUE; -- 2.7.4