MAX_PRV_GROUP,
} privilegeGroup;
-#define PRIVILEGE_NUM 131
#define EXTRA_GROUP MAX_PRV_GROUP - 1
typedef struct
const char* privilege;
const char* name_string_id;
const char* description_string_id;
+ const char* privilege_level;
privilegeGroup privilege_group_enum;
} privilege_info_s;
typedef struct
{
+ const char* privilege;
+ const char* name_string_id;
+ const char* description_string_id;
+ privilegeGroup privilege_group_enum;
+
+} external_privilege_info_s;
+
+typedef struct
+{
const char* privilege_group;
privilegeGroup privilege_group_enum;
const char* name_string_id;
{"http://tizen.org/privilege/group3", _PRV_GROUP_3, "IDS_PRIVILEGE_GROUP_NAME3"},
};
+#define PRIVILEGE_NUM 123
+
const static privilege_info_s privilege_info_table[PRIVILEGE_NUM] =
{
{"http://tizen.org/privilege/account.read", "IDS_ST_BODY_READING_ACCOUNTS_M_NOUN", "IDS_ST_BODY_ALLOWS_THE_APPLICATION_TO_READ_ACCOUNTS", _PRV_GROUP_1},
{"http://tizen.org/privilege/wifi.wifidirect.admin", "IDS_ST_BODY_MANAGING_WI_FI_DIRECT_M_NOUN", "IDS_ST_BODY_ALLOWS_THE_APPLICATION_TO_MANAGE_WI_FI_DIRECT_ON_THE_DEVICE", _PRV_GROUP_1},
{"http://tizen.org/privilege/wifi.wifidirect.read", "IDS_ST_BODY_READING_WI_FI_DIRECT_INFORMATION_M_NOUN", "IDS_ST_BODY_ALLOWS_THE_APPLICATION_TO_REQUEST_WI_FI_DIRECT_INFORMATION", _PRV_GROUP_1},
{"http://tizen.org/privilege/wifimanager", "IDS_ST_BODY_MANAGING_WI_FI_SYSTEM_SETTINGS_M_NOUN", "IDS_ST_BODY_ALLOWS_THE_APPLICATION_TO_MANAGE_THE_WI_FI_SYSTEM_SETTINGS_SUCH_AS_UPDATING_AP_INFORMATION", _PRV_GROUP_1},
- {"http://developer.samsung.com/tizen/privilege/audiomanager.session", "IDS_ST_BODY_MANAGING_AUDIO_SESSIONS_M_NOUN", "IDS_ST_BODY_ALLOWS_THE_APPLICATION_TO_MANAGE_THE_AUDIO_SESSION_POLICY_BETWEEN_APPLICATIONS", _PRV_GROUP_1},
- {"http://developer.samsung.com/tizen/privilege/audiomanager.voipsession", "IDS_ST_BODY_MANAGING_VOIP_AUDIO_SESSIONS_M_NOUN", "IDS_ST_BODY_ALLOWS_THE_APPLICATION_TO_MANAGE_AUDIO_SESSIONS_WITH_VOIP_CALLS", _PRV_GROUP_1},
- {"http://developer.samsung.com/tizen/privilege/audiomanager.volume", "IDS_ST_BODY_MANAGING_VOLUMES_M_NOUN", "IDS_ST_BODY_ALLOWS_THE_APPLICATION_TO_MANAGE_THE_AUDIO_VOLUMES_OF_VARIOUS_AUDIO_STREAM_TYPES", _PRV_GROUP_1},
- {"http://developer.samsung.com/tizen/privilege/contextmanager.upload", "IDS_ST_BODY_UPLOADING_LOGS_M_NOUN", "IDS_ST_BODY_ALLOWS_THE_APPLICATION_TO_UPLOAD_THE_ACTIVITY_LOG_TO_THE_SERVER", _PRV_GROUP_1},
- {"http://developer.samsung.com/tizen/privilege/mdm", "IDS_ST_BODY_MANAGING_MDM_SERVICE_M_NOUN", "IDS_ST_BODY_ALLOWS_THE_APPLICATION_TO_MANAGE_THE_DEVICE", _PRV_GROUP_1},
- {"http://developer.samsung.com/tizen/privilege/mobilecare", "IDS_ST_BODY_MANAGING_SAMSUNG_MOBILECARE_M_NOUN", "IDS_ST_BODY_ALLOWS_THE_APPLICATION_TO_CONTROL_SAMSUNG_MOBILECARE", _PRV_GROUP_1},
- {"http://developer.samsung.com/tizen/privilege/nfccardmanager", "IDS_ST_BODY_MANAGING_NFC_CARD_EMULATION_SETTINGS_M_NOUN", "IDS_ST_BODY_ALLOWS_THE_APPLICATION_TO_CHANGE_NFC_CARD_EMULATION_MODE_SETTINGS_MSG", _PRV_GROUP_1},
- {"http://developer.samsung.com/tizen/privilege/samsungmaps", "IDS_ST_BODY_MANAGING_SAMSUNG_MAPS_M_NOUN", "IDS_ST_BODY_ALLOWS_THE_APPLICATION_TO_CONTROL_SAMSUNG_MAPS", _PRV_GROUP_1},
+};
+
+#define EXTERNAL_PRIVILEGE_NUM 0
+
+const static privilege_info_s external_privilege_info_table[EXTERNAL_PRIVILEGE_NUM] =
+{
+ // {"http://privilege", "IDS_PRIVILEGE_NAME_ID", "IDS_PRIVILEGE_DESC_ID", "platform", _PRV_GROUP_ENUM},
};
#ifdef __cplusplus
for (i = 0; i < PRIVILEGE_NUM; i++)
{
- if (strcmp(privilege_info_table[i].privilege, privilege_name) == 0)
+ if (strncmp(privilege_info_table[i].privilege, privilege_name, strlen(privilege_info_table[i].privilege)) == 0)
{
groupTable[(privilege_info_table[i].privilege_group_enum)] = 1;
matchedFlag = true;
if (matchedFlag == false)
{
+ for (i = 0; i < EXTERNAL_PRIVILEGE_NUM; i++)
+ {
+ if (strncmp(external_privilege_info_table[i].privilege, privilege_name, strlen(external_privilege_info_table[i].privilege)) == 0)
+ {
+ groupTable[(external_privilege_info_table[i].privilege_group_enum)] = 1;
+ matchedFlag = true;
+ break;
+ }
+ }
+ }
+
+ if (matchedFlag == false)
+ {
groupTable[EXTRA_GROUP] = 1;
}
for (i = 0; i < PRIVILEGE_NUM; i++)
{
- if (strcmp(privilege_info_table[i].privilege, privilege_name) == 0)
+ if (strncmp(privilege_info_table[i].privilege, privilege_name, strlen(privilege_info_table[i].privilege)) == 0)
{
matchedFlag = true;
if (privilege_info_table[i].privilege_group_enum == data.privilege_group)
}
}
+ if (matchedFlag == false)
+ {
+ for (i = 0; i < EXTERNAL_PRIVILEGE_NUM; i++)
+ {
+ if (strncmp(external_privilege_info_table[i].privilege, privilege_name, strlen(external_privilege_info_table[i].privilege)) == 0)
+ {
+ matchedFlag = true;
+ if (external_privilege_info_table[i].privilege_group_enum == data.privilege_group)
+ {
+ res = data.callback(privilege_name, data.user_data);
+ TryReturn(res >= 0, PRVMGR_ERR_INTERNAL_ERROR, "[PRVMGR_ERR_INTERNAL_ERROR] return value of callback function is negative.");
+
+ break;
+ }
+ }
+ }
+ }
+
if ((matchedFlag == false) && (data.privilege_group == EXTRA_GROUP))
{
res = data.callback(privilege_name, data.user_data);
for (i = 0; i < MAX_PRV_GROUP; i++)
{
- if (strcmp(privilege_group_info_table[i].privilege_group, privilege_group) == 0)
+ if (strncmp(privilege_group_info_table[i].privilege_group, privilege_group, strlen(privilege_group_info_table[i].privilege_group)) == 0)
{
data.privilege_group = privilege_group_info_table[i].privilege_group_enum;
break;
int privilege_info_get_name_string_id(const char *privilege, char **name_string_id)
{
int index = 0;
+ bool matchedFlag = false;
TryReturn(privilege != NULL, PRVMGR_ERR_INVALID_PARAMETER, "[PRVMGR_ERR_INVALID_PARAMETER] privilege is NULL");
for (index = 0; index < PRIVILEGE_NUM; index++)
{
- if (strcmp(privilege_info_table[index].privilege, privilege) == 0)
+ if (strncmp(privilege_info_table[index].privilege, privilege, strlen(privilege_info_table[index].privilege)) == 0)
{
+ matchedFlag = true;
*name_string_id = (char*)calloc(strlen(privilege_info_table[index].name_string_id) + 1, sizeof(char));
TryReturn(*name_string_id != NULL, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] Memory allocation failed.");
}
}
+ if (matchedFlag == false)
+ {
+ for (index = 0; index < EXTERNAL_PRIVILEGE_NUM; index++)
+ {
+ if (strncmp(external_privilege_info_table[index].privilege, privilege, strlen(external_privilege_info_table[index].privilege)) == 0)
+ {
+ *name_string_id = (char*)calloc(strlen(external_privilege_info_table[index].name_string_id) + 1, sizeof(char));
+ TryReturn(*name_string_id != NULL, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] Memory allocation failed.");
+
+ memcpy(*name_string_id, external_privilege_info_table[index].name_string_id, strlen(external_privilege_info_table[index].name_string_id));
+ break;
+ }
+ }
+ }
+
return PRVMGR_ERR_NONE;
}
int privilege_info_get_description_string_id(const char *privilege, char **description_string_id)
{
int index = 0;
+ bool matchedFlag = false;
TryReturn(privilege != NULL, PRVMGR_ERR_INVALID_PARAMETER, "[PRVMGR_ERR_INVALID_PARAMETER] privilege is NULL");
for (index = 0; index < PRIVILEGE_NUM; index++)
{
- if (strcmp(privilege_info_table[index].privilege, privilege) == 0)
+ if (strncmp(privilege_info_table[index].privilege, privilege, strlen(privilege_info_table[index].privilege)) == 0)
{
+ matchedFlag = true;
*description_string_id = (char*)calloc(strlen(privilege_info_table[index].description_string_id) + 1, sizeof(char));
TryReturn(*description_string_id != NULL, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] Memory allocation failed.");
}
}
+ if (matchedFlag == false)
+ {
+ for (index = 0; index < EXTERNAL_PRIVILEGE_NUM; index++)
+ {
+ if (strncmp(external_privilege_info_table[index].privilege, privilege, strlen(external_privilege_info_table[index].privilege)) == 0)
+ {
+ *description_string_id = (char*)calloc(strlen(external_privilege_info_table[index].description_string_id) + 1, sizeof(char));
+ TryReturn(*description_string_id != NULL, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] Memory allocation failed.");
+
+ memcpy(*description_string_id, external_privilege_info_table[index].description_string_id, strlen(external_privilege_info_table[index].description_string_id));
+ break;
+ }
+ }
+ }
+
return PRVMGR_ERR_NONE;
}
}
return PRVMGR_ERR_NONE;
}
+
+int privilege_info_get_external_privilege_level(const char *privilege, char **privilege_level)
+{
+ int index = 0;
+ bool matchedFlag = false;
+ char* public_level = "public";
+ TryReturn(privilege != NULL, PRVMGR_ERR_INVALID_PARAMETER, "[PRVMGR_ERR_INVALID_PARAMETER] privilege is NULL");
+
+ for (index = 0; index < EXTERNAL_PRIVILEGE_NUM; index++)
+ {
+ if (strncmp(external_privilege_info_table[index].privilege, privilege, strlen(external_privilege_info_table[index].privilege)) == 0)
+ {
+ matchedFlag = true;
+ *privilege_level = (char*)calloc(strlen(external_privilege_info_table[index].privilege_level) + 1, sizeof(char));
+ TryReturn(*privilege_level != NULL, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] Memory allocation failed.");
+
+ memcpy(*privilege_level, external_privilege_info_table[index].privilege_level, strlen(external_privilege_info_table[index].privilege_level));
+ break;
+ }
+ }
+
+ if (matchedFlag == false)
+ {
+ *privilege_level = (char*)calloc(strlen(public_level) + 1, sizeof(char));
+ TryReturn(*privilege_level != NULL, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] Memory allocation failed.");
+
+ memcpy(*privilege_level, public_level, strlen(public_level));
+ }
+
+ return PRVMGR_ERR_NONE;
+}