Fix query request's behavior 53/260153/4
authorIlho Kim <ilho159.kim@samsung.com>
Mon, 21 Jun 2021 01:49:44 +0000 (10:49 +0900)
committerIlho Kim <ilho159.kim@samsung.com>
Thu, 24 Jun 2021 04:10:54 +0000 (13:10 +0900)
pkgmgrinfo_appinfo_usr_get_localed_label
 -> Need to check all of the result

pkgmgrinfo_appinfo_usr_get_datacontrol_info
pkgmgrinfo_appinfo_usr_get_datacontrol_appid
pkgmgrinfo_appinfo_usr_get_datacontrol_trusted_info
 -> Find global db first and user db later

pkgmgrinfo_updateinfo_get_usr_updateinfo
 -> Check only the result related to input uid

Change-Id: I432508978d0d19bbd387c966ffb135636a61b9a4
Signed-off-by: Ilho Kim <ilho159.kim@samsung.com>
src/manager/pkginfo_manager.cc

index edf3e62..9837570 100644 (file)
@@ -219,13 +219,13 @@ extern "C" EXPORT_API char* _appinfo_get_localed_label(
     // result is string vector
     // it only has one string or not.
     if (!result.front() || (*result.front()).empty())
-      return nullptr;
+      continue;
     label = strdup((*result.front()).c_str());
     if (label == nullptr) {
       LOG(ERROR) << "Out of memory";
       return nullptr;
     }
-    return label;
+    break;
   }
 
   return label;
@@ -267,10 +267,11 @@ extern "C" EXPORT_API int _appinfo_get_datacontrol_info(
   auto& result_list = return_parcel->GetResult();
   if (result_list.size() == 0)
     return PMINFO_R_ENOENT;
-  for (auto& result : result_list) {
+  for (auto it = result_list.rbegin(); it != result_list.rend(); it++) {
+    const auto& result = *it;
     if (result.size() != 2 || !result.front() || !result.back() ||
         (*result.front()).empty() || (*result.back()).empty())
-      return PMINFO_R_ERROR;
+      continue;
 
     char* tmp_appid = strdup((*result.front()).c_str());
     if (tmp_appid == nullptr) {
@@ -285,10 +286,11 @@ extern "C" EXPORT_API int _appinfo_get_datacontrol_info(
     }
     *appid = tmp_appid;
     *access = tmp_access;
-    break;
+
+    return PMINFO_R_OK;
   }
 
-  return PMINFO_R_OK;
+  return PMINFO_R_ENOENT;
 }
 
 extern "C" EXPORT_API int _appinfo_get_datacontrol_appid(
@@ -327,17 +329,19 @@ extern "C" EXPORT_API int _appinfo_get_datacontrol_appid(
   auto& result_list = return_parcel->GetResult();
   if (result_list.size() == 0)
     return PMINFO_R_ENOENT;
-  for (auto& result : result_list) {
+  for (auto it = result_list.rbegin(); it != result_list.rend(); it++) {
+    const auto& result = *it;
     if (result.size() != 1 || !result.front() || (*result.front()).empty())
-      return PMINFO_R_ERROR;
+      continue;
     *appid = strdup((*result.front()).c_str());
     if (*appid == nullptr) {
       LOG(ERROR) << "Out of memory";
       return PMINFO_R_ERROR;
     }
+    return PMINFO_R_OK;
   }
 
-  return PMINFO_R_OK;
+  return PMINFO_R_ENOENT;
 }
 
 extern "C" EXPORT_API int _appinfo_get_datacontrol_trusted_info(
@@ -378,10 +382,11 @@ extern "C" EXPORT_API int _appinfo_get_datacontrol_trusted_info(
   auto& result_list = return_parcel->GetResult();
   if (result_list.size() == 0)
     return PMINFO_R_ENOENT;
-  for (auto& result : result_list) {
+  for (auto it = result_list.rbegin(); it != result_list.rend(); it++) {
+    const auto& result = *it;
     if (result.size() != 2 || !result.front() || !result.back() ||
         (*result.front()).empty() || (*result.back()).empty())
-      return PMINFO_R_ERROR;
+      continue;
 
     char* tmp_appid = strdup((*result.front()).c_str());
     if (tmp_appid == nullptr) {
@@ -396,10 +401,10 @@ extern "C" EXPORT_API int _appinfo_get_datacontrol_trusted_info(
     }
     *appid = tmp_appid;
     *trusted = tmp_trusted;
-    break;
+    return PMINFO_R_OK;
   }
 
-  return PMINFO_R_OK;
+  return PMINFO_R_ENOENT;
 }
 
 extern "C" EXPORT_API int _appinfo_get_datacontrol_privileges(
@@ -675,7 +680,7 @@ extern "C" EXPORT_API int _get_pkg_updateinfo(const char* pkgid,
       return PMINFO_R_ERROR;
     }
     update_info->type = static_cast<int>(convert_type);
-    tmp_list = g_slist_prepend(tmp_list, update_info);
+    tmp_list = g_slist_append(tmp_list, update_info);
   }
 
   *update_info_list = tmp_list;