From: SeokYeon Hwang Date: Tue, 29 Dec 2015 04:52:03 +0000 (+0900) Subject: emulator_options: fix critical bug X-Git-Tag: Tizen_Studio_1.3_Release_p2.3.2~120 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9d7fdbdfa92ed90435cdd951f49edc237cc42eff;p=sdk%2Femulator%2Fqemu.git 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 --- diff --git a/tizen/src/emul_state.c b/tizen/src/emul_state.c index 3de576825c..8befca64c9 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 a47fe09368..2fcbce4dfb 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 f085f1bc48..40396c6a2a 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