From: Cheoleun Moon Date: Tue, 16 Jun 2020 02:46:04 +0000 (+0900) Subject: Check pubsub Id before invoking received message callback X-Git-Tag: submit/tizen/20200616.063112~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ac14ff1ae452b834e25dbfae80d7de8da41d4965;p=platform%2Fcore%2Fapi%2Fwifi-aware.git Check pubsub Id before invoking received message callback Change-Id: I2c1900358705aac933e0e12dd5dbea72e7ef5641 --- diff --git a/packaging/capi-network-wifi-aware.spec b/packaging/capi-network-wifi-aware.spec index 08c97c2..ed3e808 100644 --- a/packaging/capi-network-wifi-aware.spec +++ b/packaging/capi-network-wifi-aware.spec @@ -1,6 +1,6 @@ Name: capi-network-wifi-aware Summary: An Wi-Fi Aware libraries in Native API -Version: 0.1.3 +Version: 0.1.4 Release: 1 Group: Network & Connectivity/API License: Apache-2.0 diff --git a/src/wifi-aware-private.c b/src/wifi-aware-private.c index 452b9ee..521aa82 100644 --- a/src/wifi-aware-private.c +++ b/src/wifi-aware-private.c @@ -1117,14 +1117,14 @@ static bool __parsing_service_discovered_event(GVariant *parameters, return true; } -static bool __parsing_message_received_event(GVariant *parameters, unsigned int *peer_id, - unsigned char *peer_mac, +static bool __parsing_message_received_event(GVariant *parameters, uint16_t *pub_sub_id, + unsigned int *peer_id, unsigned char *peer_mac, unsigned char *message, size_t *message_len) { GVariant *mac_var = NULL; GVariant *msg_var = NULL; - g_variant_get(parameters, "(uvqv)", peer_id, &mac_var, + g_variant_get(parameters, "(quvqv)", pub_sub_id, peer_id, &mac_var, message_len, &msg_var); if (*message_len > WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN) { WIFI_AWARE_LOGE("Too long message %zd", *message_len); @@ -1215,6 +1215,7 @@ static void __message_received_cb(GDBusConnection *connection, __WIFI_AWARE_FUNC_ENTER__; WIFI_AWARE_LOGD("NAN Service is discovered"); + uint16_t pub_sub_id = 0; unsigned int peer_id = 0; unsigned char peer_mac[WIFI_AWARE_MAC_ADDRESS_LEN]; unsigned char message[WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN]; @@ -1223,12 +1224,17 @@ static void __message_received_cb(GDBusConnection *connection, wifi_aware_session_h session = (wifi_aware_session_h)user_data; wifi_aware_peer_h peer = NULL; - if (__parsing_message_received_event(parameters, &peer_id, peer_mac, + if (__parsing_message_received_event(parameters, &pub_sub_id, &peer_id, peer_mac, message, &message_len) == false) { WIFI_AWARE_LOGE("Fail to get parameters"); return; } + if (pub_sub_id != _wifi_aware_session_get_pub_sub_id(session)) { + WIFI_AWARE_LOGE("Ignore the message. not matched session[%p]", session); + return; + } + WIFI_AWARE_LOGD("Peer ID: %u", peer_id); if (__get_peer_handle(peer_id, &peer) != WIFI_AWARE_ERROR_NONE) { WIFI_AWARE_LOGE("Invalid peer %u", peer_id);