diff options
author | jusung son <jusung07.son@samsung.com> | 2018-06-18 16:36:13 +0900 |
---|---|---|
committer | jusung son <jusung07.son@samsung.com> | 2018-06-18 16:36:13 +0900 |
commit | 1871fa16435826ac5fa407d659941ff0beb88c08 (patch) | |
tree | 37a149861001c96c4764f971887b68190f5cb709 | |
parent | ff2d58f1d26b290657a66d3ac96a011261b6aeab (diff) | |
download | message-port-1871fa16435826ac5fa407d659941ff0beb88c08.tar.gz message-port-1871fa16435826ac5fa407d659941ff0beb88c08.tar.bz2 message-port-1871fa16435826ac5fa407d659941ff0beb88c08.zip |
Fix wrong hash management
- A value managed by dbus was used as hash key. So the registered hash key is deleted by dbus
Change-Id: If26359e031f6d1a7f783208446f8badb81633baf
Signed-off-by: jusung son <jusung07.son@samsung.com>
-rwxr-xr-x | src/message_port_remote.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/message_port_remote.c b/src/message_port_remote.c index da0a6fe..e6aaeab 100755 --- a/src/message_port_remote.c +++ b/src/message_port_remote.c @@ -562,6 +562,7 @@ static bool __receive_message(GVariant *parameters, GDBusMethodInvocation *invoc int *returned_fds = NULL; int fd; bool ret = false; + char *key_appid; g_variant_get(parameters, "(&s&sbb&s&sbu&s)", &local_appid, &local_port, &local_trusted, &bi_dir, &remote_appid, &remote_port, &remote_trusted, &len, &raw); @@ -614,9 +615,11 @@ static bool __receive_message(GVariant *parameters, GDBusMethodInvocation *invoc if (g_hash_table_lookup(__trusted_app_list_hash, (gpointer)local_appid) == NULL) { if (!is_preloaded(local_appid, remote_appid)) { int ret = check_certificate(local_appid, remote_appid); - if (ret == MESSAGE_PORT_ERROR_NONE) - g_hash_table_insert(__trusted_app_list_hash, local_appid, "TRUE"); - else { + if (ret == MESSAGE_PORT_ERROR_NONE) { + key_appid = strdup(local_appid); + if (key_appid) + g_hash_table_insert(__trusted_app_list_hash, key_appid, "TRUE"); + } else { _LOGE("The application (%s) is not signed with the same certificate", local_appid); goto out; |