From 8d208160a0323c8cb952393f52db5cb9bb651ae7 Mon Sep 17 00:00:00 2001 From: Dewal Agarwal Date: Fri, 14 Dec 2018 17:05:12 +0530 Subject: [PATCH] Handling account-db cleanup Change-Id: I798077664811a1fb550ba6ae702377df9bfb309d Signed-off-by: Dewal Agarwal --- src/account.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/account.c b/src/account.c index aaa6400..b1c4d5d 100644 --- a/src/account.c +++ b/src/account.c @@ -563,6 +563,38 @@ CATCH: return ret; } +int _account_info_delete_from_db(const char* app_id, uid_t uid) +{ + ENTER(); + _D("appid : %s uid : %d", app_id, uid); + + int ret = ACCOUNT_ERROR_NONE; + + if (OWNER_ROOT == uid || GLOBAL_USER == uid) + ret = account_delete_from_db_by_package_name_offline((char*)app_id); + else + ret = account_delete_from_db_by_package_name((char*)app_id); + + if ((ret != ACCOUNT_ERROR_NONE) && (ret != ACCOUNT_ERROR_RECORD_NOT_FOUND)) { + _E("Failed to perform account_delete_from_db_by_package_name_offline()."); + goto CATCH; + } + + if (OWNER_ROOT == uid || GLOBAL_USER == uid) + ret = account_type_delete_by_app_id_offline((char*)app_id); + else + ret = account_type_delete_by_app_id((char*)app_id); + + if (ret != ACCOUNT_ERROR_NONE) { + _E("Failed to perform account_type_delete_by_app_id()."); + goto CATCH; + } + +CATCH: + return ret; +} + + int _on_package_app_list_received_cb(pkgmgrinfo_appinfo_h handle, void *user_data) { ENTER(); @@ -626,6 +658,10 @@ int _pkgmgr_parser_handle_plugin(const char* package_id, const char* pkgmgr_plug ret = pkgmgrinfo_pkginfo_get_usr_pkginfo(package_id, uid, &package_info_handle); if (ret != PMINFO_R_OK) { + /*if pkgmgrinfo fails, delete account information assuming appId == package_id*/ + if (ACCOUNT_ERROR_NONE != _account_info_delete_from_db(package_id, uid)) + _E("account info deletion failed"); + _E("[%d]Failed to pkgmgrinfo_pkginfo_get_pkginfo().", ret); ret = -1; goto FINISH; -- 2.7.4