From 9d7fdbdfa92ed90435cdd951f49edc237cc42eff Mon Sep 17 00:00:00 2001 From: SeokYeon Hwang Date: Tue, 29 Dec 2015 13:52:03 +0900 Subject: [PATCH] emulator_options: fix critical bug Variable value is contaminated during it is processed. We fix this issue and prevent a recurrence of this issue by using "const" keyword. Change-Id: I7d50a82a10a6b43b203e78b5394bf3eb8e0231a2 Signed-off-by: SeokYeon Hwang --- tizen/src/emul_state.c | 8 ++++---- tizen/src/emulator_options.c | 12 ++++++------ tizen/src/emulator_options.h | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/tizen/src/emul_state.c b/tizen/src/emul_state.c index 3de5768..8befca6 100644 --- a/tizen/src/emul_state.c +++ b/tizen/src/emul_state.c @@ -377,8 +377,8 @@ const char *get_kernel_log_redirect_file(void) return kernel_log_redirect_file; } - char *vms_path = get_variable("vms_path"); - char *vm_name = get_variable("vm_name"); + const char *vms_path = get_variable("vms_path"); + const char *vm_name = get_variable("vm_name"); if (!vms_path || !vm_name) { // we can not specify log path. // emulator may not be launched from emulator-manager. @@ -443,8 +443,8 @@ const char *get_log_redirect_file(void) LOG_WARNING("Can not identify log redirection path, " "We should assume it !!!\n"); - char *vms_path = get_variable("vms_path"); - char *vm_name = get_variable("vm_name"); + const char *vms_path = get_variable("vms_path"); + const char *vm_name = get_variable("vm_name"); if (!vms_path || !vm_name) { // we can not specify log path. // emulator may not be launched from emulator-manager. diff --git a/tizen/src/emulator_options.c b/tizen/src/emulator_options.c index a47fe09..2fcbce4 100644 --- a/tizen/src/emulator_options.c +++ b/tizen/src/emulator_options.c @@ -101,7 +101,7 @@ void set_variable(const char * const arg1, const char * const arg2, QTAILQ_INSERT_TAIL(&variables, var, entry); } -char *get_variable(const char * const name) +const char *get_variable(const char * const name) { struct variable *var = NULL; @@ -139,7 +139,7 @@ static void reset_default_opts(void) #endif } -static char *substitute_variables(char *src, bool recursive) +static char *substitute_variables(const char *src, bool recursive) { int i = 0; int start_index = -1; @@ -149,10 +149,9 @@ static char *substitute_variables(char *src, bool recursive) // strip quotes int len = strlen(src); if (src[0] == '"' && src[len - 1] == '"') { - src[len - 1] = '\0'; - str = g_strdup(src + 1); + str = g_strndup(src + 1, len -2); } else { - str = g_strdup(src); + str = g_strndup(src, len); } for (i = 0; str[i]; ++i) { @@ -170,7 +169,7 @@ static char *substitute_variables(char *src, bool recursive) } char name[TOKEN_LIMIT]; - char *value = NULL; + const char *value = NULL; char *buf = NULL; int length; @@ -329,6 +328,7 @@ bool load_conf(const char * const conf) } fclose(file); + return true; } diff --git a/tizen/src/emulator_options.h b/tizen/src/emulator_options.h index f085f1b..40396c6 100644 --- a/tizen/src/emulator_options.h +++ b/tizen/src/emulator_options.h @@ -38,7 +38,7 @@ #endif void set_variable(const char * const arg1, const char * const arg2, bool override); -char *get_variable(const char * const name); +const char *get_variable(const char * const name); void reset_variables(void); bool load_conf(const char * const conf); #ifdef SUPPORT_SKIN_OPTIONS -- 2.7.4