summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMi-Ju Lee <miju52.lee@samsung.com>2018-12-14 19:50:21 +0900
committermk5004.lee <mk5004.lee@samsung.com>2019-01-11 11:17:57 +0900
commit68e3717e197af1879c3f45ab4954b5446a6260df (patch)
tree1cd1e99fde5c0024e73961bdaf66984ac23d08c3 /src
parent141507aa0d18e567f32e1862355d3fad9ae6d640 (diff)
downloadbadge-68e3717e197af1879c3f45ab4954b5446a6260df.tar.gz
badge-68e3717e197af1879c3f45ab4954b5446a6260df.tar.bz2
badge-68e3717e197af1879c3f45ab4954b5446a6260df.zip
Add badge_new_for API
Change-Id: I7f467d045e5ce52962e9d038c80e3ed22a0806ba
Diffstat (limited to 'src')
-rw-r--r--src/badge_internal.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/badge_internal.c b/src/badge_internal.c
index 1046e6f..701f7b4 100644
--- a/src/badge_internal.c
+++ b/src/badge_internal.c
@@ -1357,6 +1357,52 @@ int badge_new_for_uid(const char *writable_app_id, uid_t uid)
return err;
}
+int badge_new_for_for_uid(const char *badge_app_id, const char *writable_app_id, uid_t uid)
+{
+ CHECK_BADGE_FEATURE();
+ char *caller = NULL;
+ int err = BADGE_ERROR_NONE;
+
+ caller = _badge_get_pkgname_by_pid();
+ if (!caller) {
+ ERR("Failed to get caller pkgname");
+ return BADGE_ERROR_PERMISSION_DENIED;
+ }
+
+ if (badge_app_id == NULL) {
+ badge_app_id = caller;
+ } else {
+ int pkgmgr_ret = PACKAGE_MANAGER_ERROR_NONE;
+ package_manager_compare_result_type_e compare_result =
+ PACKAGE_MANAGER_COMPARE_MISMATCH;
+
+ pkgmgr_ret = package_manager_compare_app_cert_info(badge_app_id,
+ caller, &compare_result);
+
+ if (pkgmgr_ret != PACKAGE_MANAGER_ERROR_NONE ||
+ compare_result != PACKAGE_MANAGER_COMPARE_MATCH) {
+ err = BADGE_ERROR_INVALID_PACKAGE;
+ goto out;
+ }
+ }
+
+ err = badge_ipc_request_insert(badge_app_id, writable_app_id, caller, uid);
+out:
+ if (caller)
+ free(caller);
+ return err;
+}
+
+EXPORT_API
+int badge_new_for(const char *badge_app_id, const char *writable_app_id)
+{
+ CHECK_BADGE_FEATURE();
+ if (writable_app_id == NULL)
+ return BADGE_ERROR_INVALID_PARAMETER;
+
+ return badge_new_for_for_uid(badge_app_id, writable_app_id, getuid());
+}
+
EXPORT_API
int badge_add_for_uid(const char *badge_app_id, uid_t uid)
{