#define MAX_NAME_LENGTH 255
-static void _mc_util_check_valid_name(const char *name, char **new_name)
+static void _mc_util_check_valid_name(const char *name, char **valid_name)
{
char old_word[MAX_NAME_LENGTH] = {0, };
char new_word[MAX_NAME_LENGTH] = {0, };
- unsigned int i = 0;
+ unsigned int i = 0, j = 0;
mc_retm_if(name == NULL, "Invalid parameter.");
memset(old_word, 0, MAX_NAME_LENGTH);
memset(new_word, 0, MAX_NAME_LENGTH);
- /* It should have terminated C string, old-word should be limited to MAX_NAME_LENGTH - 1 */
- if (strlen(name) > MAX_NAME_LENGTH - 1)
- memcpy(old_word, name, MAX_NAME_LENGTH - 1);
- else
- memcpy(old_word, name, strlen(name));
+ g_strlcpy(old_word, name, sizeof(old_word));
/* only 0~9, a~z, A~Z, '.', '_' will be used */
- for (i = 0; i < strlen(old_word); i++) {
+ for (i = 0; (i < strlen(old_word)) && (j < sizeof(new_word)); i++) {
if ((old_word[i] >= '0' && old_word[i] <= '9') ||
(old_word[i] >= 'a' && old_word[i] <= 'z') ||
(old_word[i] >= 'A' && old_word[i] <= 'Z') ||
- (old_word[i] == '.' && i != 0)) {
- new_word[i] = old_word[i];
+ (old_word[i] == '.' && i != 0) ||
+ (old_word[i] == '_' && i != 0)) {
+ new_word[j++] = old_word[i];
} else {
- new_word[i] = 'x';
+ new_word[j++] = 'A';
+ new_word[j++] = 'P';
+ new_word[j++] = 'P';
+ new_word[j++] = 'I';
+ new_word[j++] = 'D';
+ new_word[j++] = '_';
+ new_word[j++] = 'S';
+ new_word[j++] = 'E';
+ new_word[j++] = 'P';
}
}
- (*new_name) = strdup(new_word);
+ *valid_name = g_strdup(new_word);
- mc_retm_if((*new_name) == NULL, "Error allocation memory.");
+ mc_retm_if((*valid_name) == NULL, "Error allocation memory.");
}
int mc_util_get_own_name(char **name)