From 6f3af61675fc43c8f2c12a8b007274ad5997bec9 Mon Sep 17 00:00:00 2001 From: Zofia Abramowska Date: Mon, 6 Jul 2015 17:38:30 +0200 Subject: [PATCH] Add API for privilege mapping between versions Change-Id: Id61c2e4d8ff0252f6269ba3c6756170bdca38295 --- src/client/client-security-manager.cpp | 22 ++++++++++++++++++++++ src/include/security-manager.h | 29 +++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/src/client/client-security-manager.cpp b/src/client/client-security-manager.cpp index 5a8c4d8..48b4594 100644 --- a/src/client/client-security-manager.cpp +++ b/src/client/client-security-manager.cpp @@ -978,3 +978,25 @@ void security_manager_policy_levels_free(char **levels, size_t levels_count) delete[] levels; } + +SECURITY_MANAGER_API +int security_manager_get_privileges_mapping(const char *from_version, + const char *to_version, + char const * const *privileges, + size_t privileges_count, + char ***privileges_mappings, + size_t *mappings_count) +{ + (void)to_version; + if (from_version == nullptr || privileges == nullptr || + privileges_mappings == nullptr || mappings_count == nullptr || privileges_count == 0) { + return SECURITY_MANAGER_ERROR_INPUT_PARAM; + } + return SECURITY_MANAGER_ERROR_UNKNOWN; +} +SECURITY_MANAGER_API +void security_manager_privilege_mapping_free(char **privileges_mappings, size_t mappings_count) +{ + (void)privileges_mappings; + (void)mappings_count; +} diff --git a/src/include/security-manager.h b/src/include/security-manager.h index 9ddcfca..a96d5e7 100644 --- a/src/include/security-manager.h +++ b/src/include/security-manager.h @@ -731,6 +731,35 @@ int security_manager_policy_levels_get(char ***levels, size_t *levels_count); */ void security_manager_policy_levels_free(char **levels, size_t levels_count); +/** + * This function returns mapping of MULTIPLE privileges from one version to the other. + * List of privileges is a union of mappings of every single given privilege. + * + * Caller needs to free memory allocated for the list using + * security_manager_privilege_mapping_free(). + * + * @param[in] from_version Version of passed privilege + * @param[in] to_version Version of requested mapping, if NULL default one will be used + * @param[in] privileges Names of privileges to be mapped + * @param[in] privileges_count Number of privileges to be mapped + * @param[out] privilege_mapping Pointer to list of sum of privileges which given privileges maps to + * @param[out] mapping_count + * @return API return code or error code + */ +int security_manager_get_privileges_mapping(const char *from_version, + const char *to_version, + char const * const *privileges, + size_t privileges_count, + char ***privileges_mappings, + size_t *mappings_count); +/** + * This function frees memory allocated by security_manager_get_privilege_mapping() and + * security_manager_get_privileges_mapping(). + * + * @param[in] privilege_mapping List of privileges + * @param[in] mapping_count Number of privileges + */ +void security_manager_privilege_mapping_free(char **privileges_mappings, size_t mappings_count); #ifdef __cplusplus } #endif -- 2.7.4