From 19e417b5762afd38388c880be4fc196dcc9e8f19 Mon Sep 17 00:00:00 2001 From: Sangyoon Jang Date: Thu, 27 Aug 2015 21:43:54 +0900 Subject: [PATCH] Fix pkg_getsize, add checking clearcache privilege send signal correctly in pkg_getsize add handling clearcache request add privilege for clear cache request Change-Id: I9b3184ee04e7e5dfc9a50eee606bf48648e4d694 Signed-off-by: Sangyoon Jang --- client/src/pkgmgr.c | 6 ++++-- server/src/pkgmgr-server.c | 9 +++++++-- tool/pkg_getsize.c | 12 +++++++----- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/client/src/pkgmgr.c b/client/src/pkgmgr.c index f2069e6..6f1073f 100644 --- a/client/src/pkgmgr.c +++ b/client/src/pkgmgr.c @@ -300,7 +300,7 @@ static void __operation_callback(void *cb_data, uid_t target_uid, /* find callback info */ cb_info = __find_op_cbinfo(pc, req_id); if (cb_info == NULL) { - ERR("cannot fint cb_info for req_id:%d", req_id); + ERR("cannot fint cb_info for req_id:%s", req_id); return; } @@ -740,6 +740,7 @@ static int __get_size_process(pkgmgr_client * pc, const char *pkgid, uid_t uid, snprintf(buf, 128, "%d", get_type); argv[argcnt++] = strdup(pkgid); argv[argcnt++] = strdup(buf); + argv[argcnt++] = strdup("-k"); argv[argcnt++] = strdup(req_key); /*** add quote in all string for special charactor like '\n'*** FIX */ @@ -937,7 +938,8 @@ static int __request_size_info(pkgmgr_client *pc, uid_t uid) snprintf(buf, 128, "%d", get_type); argv[argcnt++] = strdup(pkgid); argv[argcnt++] = strdup(buf); - argv[argcnt++] = strdup(buf); + argv[argcnt++] = strdup("-k"); + argv[argcnt++] = req_key; /*** add quote in all string for special charactor like '\n'*** FIX */ for (i = 0; i < argcnt; i++) { diff --git a/server/src/pkgmgr-server.c b/server/src/pkgmgr-server.c index cf04269..1dc66f8 100644 --- a/server/src/pkgmgr-server.c +++ b/server/src/pkgmgr-server.c @@ -237,6 +237,7 @@ static void __unset_recovery_mode(uid_t uid, char *pkgid, char *pkg_type) #define PRIVILEGE_PACKAGEMANAGER_ADMIN "http://tizen.org/privilege/packagemanager.admin" #define PRIVILEGE_PACKAGEMANAGER_INFO "http://tizen.org/privilege/packagemanager.info" +#define PRIVILEGE_PACKAGEMANAGER_CLEARCACHE "http://tizen.org/privilege/packagemanager.clearcache" #define PRIVILEGE_PACKAGEMANAGER_NONE "NONE" static const char *__convert_req_type_to_privilege(int req_type) @@ -247,11 +248,12 @@ static const char *__convert_req_type_to_privilege(int req_type) case COMM_REQ_TO_CLEARER: case COMM_REQ_TO_MOVER: case COMM_REQ_KILL_APP: - case COMM_REQ_CLEAR_CACHE_DIR: return PRIVILEGE_PACKAGEMANAGER_ADMIN; case COMM_REQ_GET_SIZE: case COMM_REQ_CHECK_APP: return PRIVILEGE_PACKAGEMANAGER_INFO; + case COMM_REQ_CLEAR_CACHE_DIR: + return PRIVILEGE_PACKAGEMANAGER_CLEARCACHE; case COMM_REQ_CANCEL: default: return PRIVILEGE_PACKAGEMANAGER_NONE; @@ -1291,7 +1293,7 @@ gboolean queue_job(void *data) break; case COMM_REQ_GET_SIZE: DBG("before run _get_backend_cmd()"); - __exec_with_arg_vector("usr/bin/pkg_getsize", __generate_argv(item->args), item->uid); + __exec_with_arg_vector("/usr/bin/pkg_getsize", __generate_argv(item->args), item->uid); break; case COMM_REQ_KILL_APP: case COMM_REQ_CHECK_APP: @@ -1320,6 +1322,9 @@ gboolean queue_job(void *data) } pkgmgrinfo_pkginfo_destroy_pkginfo(handle); break; + case COMM_REQ_CLEAR_CACHE_DIR: + __exec_with_arg_vector("/usr/bin/pkg_clearcache", __generate_argv(item->args), item->uid); + break; } /* exit child */ _save_queue_status(item, "done"); diff --git a/tool/pkg_getsize.c b/tool/pkg_getsize.c index 1ac4551..18a5d6e 100644 --- a/tool/pkg_getsize.c +++ b/tool/pkg_getsize.c @@ -545,8 +545,9 @@ static int __send_result_to_signal(pkgmgr_installer *pi, const char *req_key, if (info_str == NULL) return -1; - ret = pkgmgr_installer_send_signal(pi, req_key, pkgid, "get_size", - info_str); + ret = pkgmgr_installer_send_signal(pi, + PKGMGR_INSTALLER_GET_SIZE_KEY_STR, + pkgid, PKGMGR_INSTALLER_GET_SIZE_KEY_STR, info_str); free(info_str); return ret; @@ -565,7 +566,7 @@ int main(int argc, char *argv[]) // argv has bellowed meaning // argv[0] = pkgid // argv[1] = get type - // argv[2] = req_key + // argv[3] = req_key if (argv[0] == NULL) { ERR("pkgid is NULL\n"); @@ -574,7 +575,7 @@ int main(int argc, char *argv[]) pkgid = argv[0]; get_type = atoi(argv[1]); - req_key = argv[2]; + req_key = argv[3]; DBG("start get size : [pkgid=%s, request type=%d]", pkgid, get_type); @@ -583,6 +584,7 @@ int main(int argc, char *argv[]) ERR("failed to create installer"); return -1; } + pkgmgr_installer_receive_request(pi, argc, argv); switch (get_type) { case PM_GET_TOTAL_SIZE: @@ -628,7 +630,7 @@ int main(int argc, char *argv[]) if (ret == 0) ret = __send_result_to_signal(pi, req_key, PKG_SIZE_INFO_TOTAL, &info); - __make_size_info_file(req_key, 0); + ret = __make_size_info_file(req_key, 0); break; default: ret = -1; -- 2.7.4