Fix pkg_getsize, add checking clearcache privilege 75/46975/1 accepted/tizen/mobile/20150828.012429 accepted/tizen/tv/20150828.012456 accepted/tizen/wearable/20150828.012516 submit/tizen/20150827.124904
authorSangyoon Jang <s89.jang@samsung.com>
Thu, 27 Aug 2015 12:43:54 +0000 (21:43 +0900)
committerSangyoon Jang <s89.jang@samsung.com>
Thu, 27 Aug 2015 12:43:54 +0000 (21:43 +0900)
send signal correctly in pkg_getsize
add handling clearcache request
add privilege for clear cache request

Change-Id: I9b3184ee04e7e5dfc9a50eee606bf48648e4d694
Signed-off-by: Sangyoon Jang <s89.jang@samsung.com>
client/src/pkgmgr.c
server/src/pkgmgr-server.c
tool/pkg_getsize.c

index f2069e6..6f1073f 100644 (file)
@@ -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++) {
index cf04269..1dc66f8 100644 (file)
@@ -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");
index 1ac4551..18a5d6e 100644 (file)
@@ -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;