From 7291ce8d181ab42425847de4430cd6dc26485e4b Mon Sep 17 00:00:00 2001 From: Ilho Kim Date: Mon, 21 Jun 2021 10:49:44 +0900 Subject: [PATCH] Fix query request's behavior 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 --- src/manager/pkginfo_manager.cc | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/src/manager/pkginfo_manager.cc b/src/manager/pkginfo_manager.cc index edf3e62..9837570 100644 --- a/src/manager/pkginfo_manager.cc +++ b/src/manager/pkginfo_manager.cc @@ -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(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; -- 2.7.4