diff options
author | Mi-Ju Lee <miju52.lee@samsung.com> | 2018-12-14 19:50:21 +0900 |
---|---|---|
committer | mk5004.lee <mk5004.lee@samsung.com> | 2019-01-11 11:17:57 +0900 |
commit | 68e3717e197af1879c3f45ab4954b5446a6260df (patch) | |
tree | 1cd1e99fde5c0024e73961bdaf66984ac23d08c3 /src | |
parent | 141507aa0d18e567f32e1862355d3fad9ae6d640 (diff) | |
download | badge-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.c | 46 |
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) { |