#define DEFAULT_OPT 0
-#define CONVERT_ARGUMENT(input_str, output_num, table) \
+#define CONVERT_ARGUMENT(input_str, input_str_len, output_num, table) \
{ \
int __idx; \
bool __is_converted = false; \
if (!__is_converted) { \
if (input_str[0] == '\0') { \
output_num = table[DEFAULT_OPT].num; \
- strncpy(input_str, table[DEFAULT_OPT].str, strlen(table[DEFAULT_OPT].str) + 1); \
+ strncpy(input_str, table[DEFAULT_OPT].str, input_str_len - 1); \
+ input_str[input_str_len - 1] = '\0'; \
} else { \
printf("Invalid argument %s\n\n", input_str); \
show_help(); \
}
/* Convert string arguments into the enum value */
- CONVERT_ARGUMENT(tag_str, tag_num, tag_table);
- CONVERT_ARGUMENT(type_str, type_num, type_table);
- CONVERT_ARGUMENT(runtime_str, runtime_num, runtime_table);
+ CONVERT_ARGUMENT(tag_str, sizeof(tag_str), tag_num, tag_table);
+ CONVERT_ARGUMENT(type_str, sizeof(type_str), type_num, type_table);
+ CONVERT_ARGUMENT(runtime_str, sizeof(runtime_str), runtime_num, runtime_table);
/* Set the runtime environment value */
switch (runtime_num) {