Fix memory leak 79/238879/4
authorJunghoon Park <jh9216.park@samsung.com>
Mon, 20 Jul 2020 04:51:32 +0000 (13:51 +0900)
committerJunghoon Park <jh9216.park@samsung.com>
Wed, 22 Jul 2020 01:35:29 +0000 (10:35 +0900)
- Remove useless invocations of strdup()
- Change g_variant argument types to reference type

Change-Id: I80f7bd057440023d1127bec34d4bcd9456364621
Signed-off-by: Junghoon Park <jh9216.park@samsung.com>
notification-ex/dbus_event_listener.cc
notification-ex/shared_file.cc

index a075622..e37a3a2 100644 (file)
@@ -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<Bundle> 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<Bundle> 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);
 
index d630a73..c860fd1 100644 (file)
@@ -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) {