Pass pid as a function paramter 54/130554/1
authorSeungha Son <seungha.son@samsung.com>
Tue, 23 May 2017 02:15:41 +0000 (11:15 +0900)
committerSeungha Son <seungha.son@samsung.com>
Tue, 23 May 2017 02:18:08 +0000 (11:18 +0900)
 Before accessing badge db, pass pid to verify that the process is a
 daemon.

related patch : https://review.tizen.org/gerrit/#/c/130553/

Signed-off-by: Seungha Son <seungha.son@samsung.com>
Change-Id: I9612315b0907f5544c522e36d12cc1a8a4f6f311

include/badge_service.h
src/badge_service.c

index 3bbc725..6428739 100755 (executable)
@@ -23,8 +23,8 @@ extern int badge_service_fini(void);
 int badge_get_badge_existing(GVariant *parameters, GVariant **reply_body, uid_t uid);
 int badge_get_badge_list(GVariant *parameters, GVariant **reply_body, uid_t uid);
 int badge_insert(GVariant *parameters, GVariant **reply_body, uid_t uid);
-int badge_delete(GVariant *parameters, GVariant **reply_body, uid_t uid);
-int badge_set_badge_count(GVariant *parameters, GVariant **reply_body, uid_t uid);
+int badge_delete(GVariant *parameters, GVariant **reply_body, uid_t uid, pid_t pid);
+int badge_set_badge_count(GVariant *parameters, GVariant **reply_body, uid_t uid, pid_t pid);
 int badge_get_badge_count(GVariant *parameters, GVariant **reply_body, uid_t uid);
 int badge_set_display_option(GVariant *parameters, GVariant **reply_body, uid_t uid);
 int badge_get_display_option(GVariant *parameters, GVariant **reply_body, const gchar *sender, uid_t uid);
index 69ecfca..eec1691 100755 (executable)
@@ -70,6 +70,7 @@ static void _badge_dbus_method_call_handler(GDBusConnection *conn,
        GVariant *reply_body = NULL;
        int ret = BADGE_ERROR_INVALID_PARAMETER;
        uid_t uid = get_sender_uid(sender);
+       pid_t pid = get_sender_pid(sender);
 
        if (g_strcmp0(method_name, "badge_service_register") == 0)
                ret = service_register(parameters, &reply_body, sender,
@@ -81,9 +82,9 @@ static void _badge_dbus_method_call_handler(GDBusConnection *conn,
        else if (g_strcmp0(method_name, "insert_badge") == 0)
                ret = badge_insert(parameters, &reply_body, uid);
        else if (g_strcmp0(method_name, "delete_badge") == 0)
-               ret = badge_delete(parameters, &reply_body, uid);
+               ret = badge_delete(parameters, &reply_body, uid, pid);
        else if (g_strcmp0(method_name, "set_badge_count") == 0)
-               ret = badge_set_badge_count(parameters, &reply_body, uid);
+               ret = badge_set_badge_count(parameters, &reply_body, uid, pid);
        else if (g_strcmp0(method_name, "get_badge_count") == 0)
                ret = badge_get_badge_count(parameters, &reply_body, uid);
        else if (g_strcmp0(method_name, "set_disp_option") == 0)
@@ -375,7 +376,7 @@ int badge_insert(GVariant *parameters, GVariant **reply_body, uid_t uid)
 }
 
 /* delete_badge */
-int badge_delete(GVariant *parameters, GVariant **reply_body, uid_t uid)
+int badge_delete(GVariant *parameters, GVariant **reply_body, uid_t uid, pid_t pid)
 {
        int ret = BADGE_ERROR_NONE;
        char *pkgname = NULL;
@@ -389,11 +390,10 @@ int badge_delete(GVariant *parameters, GVariant **reply_body, uid_t uid)
        if (ret != BADGE_ERROR_NONE)
                return ret;
 
-       if (pkgname != NULL && caller != NULL) {
-               ret = badge_db_delete(pkgname, caller, param_uid);
-       } else {
+       if (pkgname != NULL && caller != NULL)
+               ret = badge_db_delete(pkgname, caller, param_uid, pid);
+       else
                return BADGE_ERROR_INVALID_PARAMETER;
-       }
 
        if (ret != BADGE_ERROR_NONE) {
                ErrPrint("failed to delete badge :%d\n", ret);
@@ -426,7 +426,7 @@ int badge_delete(GVariant *parameters, GVariant **reply_body, uid_t uid)
 }
 
 /* set_badge_count */
-int badge_set_badge_count(GVariant *parameters, GVariant **reply_body, uid_t uid)
+int badge_set_badge_count(GVariant *parameters, GVariant **reply_body, uid_t uid, pid_t pid)
 {
        int ret = BADGE_ERROR_NONE;
        char *pkgname = NULL;
@@ -447,7 +447,7 @@ int badge_set_badge_count(GVariant *parameters, GVariant **reply_body, uid_t uid
                        badge_setting_refresh_setting_table(tzplatform_getuid(TZ_SYS_DEFAULT_USER));
                        need_to_reload_pkginfo_for_badge = 0;
                }
-               ret = badge_db_set_count(pkgname, caller, count, param_uid);
+               ret = badge_db_set_count(pkgname, caller, count, param_uid, pid);
        } else {
                return BADGE_ERROR_INVALID_PARAMETER;
        }