From: Junghoon Park Date: Mon, 20 Jul 2020 04:51:32 +0000 (+0900) Subject: Fix memory leak X-Git-Tag: submit/tizen/20200722.020302~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=54a2839519058c8fb8bb847dcdab084d6fd82f5c;p=platform%2Fcore%2Fapi%2Fnotification.git Fix memory leak - Remove useless invocations of strdup() - Change g_variant argument types to reference type Change-Id: I80f7bd057440023d1127bec34d4bcd9456364621 Signed-off-by: Junghoon Park --- diff --git a/notification-ex/dbus_event_listener.cc b/notification-ex/dbus_event_listener.cc index a075622c..e37a3a2c 100644 --- a/notification-ex/dbus_event_listener.cc +++ b/notification-ex/dbus_event_listener.cc @@ -172,28 +172,33 @@ void DBusEventListener::Impl::SignalCb(GDBusConnection* connection, char* appid = nullptr; GVariantIter *iter = nullptr; char* event_info_raw = nullptr; - g_variant_get(parameters, "(ssa(s))", &appid, &event_info_raw, &iter); + g_variant_get(parameters, "(&s&sa(s))", &appid, &event_info_raw, &iter); LOGI("signal callback!! (%s)", appid); string sender_appid = string(appid); string cur_appid = util::GetAppId(); - if (sender_appid == cur_appid) + if (sender_appid == cur_appid) { + g_variant_iter_free(iter); return; + } if ((!DBusConnectionManager::GetInst().IsDataProviderMaster(cur_appid) && !DBusConnectionManager::GetInst().IsDataProviderMaster(sender_appid)) - || (cur_appid == sender_appid)) + || (cur_appid == sender_appid)) { + g_variant_iter_free(iter); return; + } LOGD("%s : %s", cur_appid.c_str(), sender_appid.c_str()); try { char* raw = nullptr; list ret_list; - while (g_variant_iter_loop(iter, "(s)", &raw) && raw != nullptr) { + while (g_variant_iter_loop(iter, "(&s)", &raw) && raw != nullptr) { Bundle ret(raw); ret_list.emplace_back(ret); } + g_variant_iter_free(iter); Bundle b(event_info_raw); EventInfo info(b); if (info.GetEventType() == EventInfo::Post @@ -217,28 +222,33 @@ void DBusEventListener::Impl::MethodCallHandler(GVariant* parameters, GVariantIter* iter = nullptr; char* event_info_raw = nullptr; - g_variant_get(parameters, "(ssa(s))", &appid, &event_info_raw, &iter); + g_variant_get(parameters, "(&s&sa(s))", &appid, &event_info_raw, &iter); string sender_appid = string(appid); string cur_appid = util::GetAppId(); LOGI("MethodCallHandler!! appid(%s), sender(%s), cur(%s)", appid, sender_appid.c_str(), cur_appid.c_str()); - if (sender_appid == cur_appid) + if (sender_appid == cur_appid) { + g_variant_iter_free(iter); return; + } if ((!DBusConnectionManager::GetInst().IsDataProviderMaster(cur_appid) && !DBusConnectionManager::GetInst().IsDataProviderMaster(sender_appid)) - || (cur_appid == sender_appid)) + || (cur_appid == sender_appid)) { + g_variant_iter_free(iter); return; + } char* raw = nullptr; list ret_list; - while (g_variant_iter_loop(iter, "(s)", &raw) && raw != nullptr) { + while (g_variant_iter_loop(iter, "(&s)", &raw) && raw != nullptr) { Bundle ret(raw); ret_list.emplace_back(ret); } + g_variant_iter_free(iter); Bundle b(event_info_raw); EventInfo info(b); diff --git a/notification-ex/shared_file.cc b/notification-ex/shared_file.cc index d630a733..c860fd11 100644 --- a/notification-ex/shared_file.cc +++ b/notification-ex/shared_file.cc @@ -248,11 +248,7 @@ int SharedFile::SetSharingData(SharingData sharing_data, if (req == nullptr) return ERROR_IO_ERROR; - appid = strdup(sharing_data.app_id.c_str()); - if (appid == nullptr) { - LOGE("Failed to get Sender appid"); - return ERROR_OUT_OF_MEMORY; - } + appid = sharing_data.app_id.c_str(); ret = security_manager_private_sharing_req_set_owner_appid(req.get(), appid); if (ret != SECURITY_MANAGER_SUCCESS) { @@ -327,11 +323,7 @@ int SharedFile::UnsetSharingData(SharingData sharing_data, if (req == nullptr) return ERROR_IO_ERROR; - appid = strdup(sharing_data.app_id.c_str()); - if (appid == nullptr) { - LOGE("Failed to get Sender appid"); - return ERROR_OUT_OF_MEMORY; - } + appid = sharing_data.app_id.c_str(); ret = security_manager_private_sharing_req_set_owner_appid(req.get(), appid); if (ret != SECURITY_MANAGER_SUCCESS) {