Get appinfo status of caller's app only 60/42560/2 accepted/tizen/mobile/20150702.045226 accepted/tizen/tv/20150702.040116 accepted/tizen/wearable/20150702.040145 submit/tizen/20150702.000829
authorSangyoon Jang <s89.jang@samsung.com>
Tue, 30 Jun 2015 05:32:30 +0000 (14:32 +0900)
committerSangyoon Jang <s89.jang@samsung.com>
Thu, 2 Jul 2015 00:06:24 +0000 (09:06 +0900)
get appinfo status of caller's app only
rename app_status_info's member user to uid

Change-Id: Ie321b9d305f172236cf41b84c4cf1e8c578dfa67
Signed-off-by: Sangyoon Jang <s89.jang@samsung.com>
am_daemon/amd_launch.c
am_daemon/amd_request.c
am_daemon/amd_status.c
am_daemon/amd_status.h
include/aul_util.h

index 94c4ff2..6e69f09 100644 (file)
@@ -749,7 +749,6 @@ static int __nofork_processing(int cmd, int pid, bundle * kb, int clifd)
        return ret;
 }
 
-
 int _start_app(char* appid, bundle* kb, int cmd, int caller_pid, uid_t caller_uid, int fd)
 {
        const struct appinfo *ai;
@@ -854,7 +853,7 @@ int _start_app(char* appid, bundle* kb, int cmd, int caller_pid, uid_t caller_ui
 
        multiple = appinfo_get_value(ai, AIT_MULTI);
        if (!multiple || strncmp(multiple, "false", 5) == 0) {
-               pid = _status_app_is_running_v2(appid, caller_uid);
+               pid = _status_app_is_running(appid, caller_uid);
        }
 
        if (app_group_is_group_app(kb, caller_uid)) {
@@ -863,7 +862,7 @@ int _start_app(char* appid, bundle* kb, int cmd, int caller_pid, uid_t caller_ui
        }
 
        if (pid > 0) {
-               if (_status_get_app_info_status(pid) == STATUS_DYING) {
+               if (_status_get_app_info_status(pid, caller_uid) == STATUS_DYING) {
                        pid = -ETERMINATING;
                } else if (caller_pid == pid) {
                        SECURE_LOGD("caller process & callee process is same.[%s:%d]", appid, pid);
index 21a9b09..76dd064 100644 (file)
@@ -539,7 +539,7 @@ static gboolean __request_handler(gpointer data)
                        ret = __app_process_by_pid(pkt->cmd, appid, &cr, clifd);
                        break;
                case APP_RUNNING_INFO:
-                       _status_send_running_appinfo(clifd);
+                       _status_send_running_appinfo(clifd, cr.uid);
                        break;
                case APP_IS_RUNNING:
                        appid = malloc(MAX_PACKAGE_STR_SIZE);
index 2f8167a..d053c3e 100644 (file)
@@ -45,7 +45,7 @@ int _status_add_app_info_list(char *appid, char *app_path, int pid, int pad_pid,
        GSLIST_FOREACH_SAFE(app_status_info_list, iter, iter_next) {
                info_t = (app_status_info_t *)iter->data;
                if(pid == info_t->pid) {
-                       if(uid == info_t->user)
+                       if(uid == info_t->uid)
                                return 0;
                        else {
                                //PID is unique so if it is exist but user value is not correct remove it.
@@ -62,14 +62,14 @@ int _status_add_app_info_list(char *appid, char *app_path, int pid, int pad_pid,
        info_t->status = STATUS_LAUNCHING;
        info_t->pid = pid;
        info_t->pad_pid = pad_pid;
-       info_t->user = uid;
+       info_t->uid = uid;
        app_status_info_list = g_slist_append(app_status_info_list, info_t);
 
        for (iter = app_status_info_list; iter != NULL; iter = g_slist_next(iter))
        {
                info_t = (app_status_info_t *)iter->data;
 
-               SECURE_LOGD(" [%d] : %s, %d, %d", info_t->user, info_t->appid, info_t->pid, info_t->status);
+               SECURE_LOGD(" [%d] : %s, %d, %d", info_t->uid, info_t->appid, info_t->pid, info_t->status);
        }
 
        return 0;
@@ -84,7 +84,7 @@ int _status_update_app_info_list(int pid, int status, uid_t uid)
        for (iter = app_status_info_list; iter != NULL; iter = g_slist_next(iter))
        {
                info_t = (app_status_info_t *)iter->data;
-               if((pid == info_t->pid) && ((info_t->user == uid) || (info_t->user == 0))) {
+               if((pid == info_t->pid) && ((info_t->uid == uid) || (info_t->uid == 0))) {
                        info_t->status = status;
                        is_sub_app = false;
                        break;
@@ -113,7 +113,7 @@ int _status_remove_app_info_list_with_uid(uid_t uid)
 
        GSLIST_FOREACH_SAFE(app_status_info_list, iter, iter_next) {
                info_t = (app_status_info_t *)iter->data;
-               if (info_t->user == uid) {
+               if (info_t->uid == uid) {
                        app_status_info_list =
                                g_slist_remove(app_status_info_list, info_t);
                        free(info_t);
@@ -130,7 +130,7 @@ int _status_remove_app_info_list(int pid, uid_t uid)
 
        GSLIST_FOREACH_SAFE(app_status_info_list, iter, iter_next) {
                info_t = (app_status_info_t *)iter->data;
-               if((pid == info_t->pid) && ((info_t->user == uid) || (info_t->user == 0))) {
+               if((pid == info_t->pid) && ((info_t->uid == uid) || (info_t->uid == 0))) {
                        app_status_info_list = g_slist_remove(app_status_info_list, info_t);
                        free(info_t);
                        break;
@@ -147,7 +147,7 @@ int _status_remove_app_info_list(int pid, uid_t uid)
        return 0;
 }
 
-int _status_get_app_info_status(int pid)
+int _status_get_app_info_status(int pid, uid_t uid)
 {
        GSList *iter = NULL;
        app_status_info_t *info_t = NULL;
@@ -155,7 +155,7 @@ int _status_get_app_info_status(int pid)
        for (iter = app_status_info_list; iter != NULL; iter = g_slist_next(iter))
        {
                info_t = (app_status_info_t *)iter->data;
-               if(pid == info_t->pid) {
+               if(pid == info_t->pid && uid == info_t->uid) {
                        return info_t->status;
                }
        }
@@ -163,7 +163,6 @@ int _status_get_app_info_status(int pid)
        return -1;
 }
 
-
 int _status_app_is_running(char *appid, uid_t uid)
 {
        GSList *iter = NULL;
@@ -172,7 +171,7 @@ int _status_app_is_running(char *appid, uid_t uid)
        for (iter = app_status_info_list; iter != NULL; iter = g_slist_next(iter))
        {
                info_t = (app_status_info_t *)iter->data;
-               if(( strncmp(appid, info_t->appid, MAX_PACKAGE_STR_SIZE) == 0 ) && (info_t->user == uid)) {
+               if(( strncmp(appid, info_t->appid, MAX_PACKAGE_STR_SIZE) == 0 ) && (info_t->uid == uid)) {
                        return info_t->pid;
                }
        }
@@ -194,7 +193,7 @@ char* _status_app_get_appid_bypid(int pid)
        return NULL;
 }
 
-int _status_send_running_appinfo(int fd)
+int _status_send_running_appinfo(int fd, uid_t uid)
 {
        GSList *iter = NULL;
        app_status_info_t *info_t = NULL;
@@ -213,7 +212,7 @@ int _status_send_running_appinfo(int fd)
        for (iter = app_status_info_list; iter != NULL; iter = g_slist_next(iter))
        {
                info_t = (app_status_info_t *)iter->data;
-               if (app_group_is_sub_app(info_t->pid))
+               if (info_t->uid != uid || app_group_is_sub_app(info_t->pid))
                        continue;
 
                snprintf(tmp_pid, MAX_PID_STR_BUFSZ, "%d", info_t->pid);
index aed3ca6..fcf305a 100644 (file)
@@ -27,8 +27,8 @@
 int _status_add_app_info_list(char *appid, char *app_path, int pid, int pad_pid, uid_t uid);
 int _status_update_app_info_list(int pid, int status,  uid_t uid);
 int _status_remove_app_info_list(int pid, uid_t uid);
-int _status_get_app_info_status(int pid);
-int _status_send_running_appinfo(int fd);
+int _status_get_app_info_status(int pid, uid_t uid);
+int _status_send_running_appinfo(int fd, uid_t uid);
 int _status_app_is_running(char *appid,  uid_t uid);
 int _status_app_is_running_v2(char *appid, uid_t caller_uid);
 char *_status_app_get_appid_bypid(int pid);
index 9930e9d..3f9bac9 100644 (file)
@@ -47,7 +47,7 @@ typedef struct _app_status_info_t{
        int status;
        int pid;
        int pad_pid;
-       uid_t user;
+       uid_t uid;
 } app_status_info_t;
 
 int _add_app_status_info_list(char *appid, int pid, uid_t uid);