From f27b03c4dc0d2248610bcd703d3691b487420098 Mon Sep 17 00:00:00 2001 From: "sooyeon.kim" Date: Thu, 16 Aug 2018 15:58:52 +0900 Subject: [PATCH] Fix corrupted double-linked list Change-Id: Ib3ac1485157c741f0f5c245892155e25b42d8564 Signed-off-by: sooyeon.kim --- src/vc_elm_core.c | 114 ++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 77 insertions(+), 37 deletions(-) diff --git a/src/vc_elm_core.c b/src/vc_elm_core.c index d46c05d..df50407 100644 --- a/src/vc_elm_core.c +++ b/src/vc_elm_core.c @@ -2351,18 +2351,26 @@ int _vc_elm_core_read_xml_data() while (tmp != NULL) { if (0 == xmlStrcmp(tmp->name, XML_CAST VC_ELM_TAG_ACTION_NAME)) { key = xmlNodeGetContent(tmp); - VC_ELM_LOG_DBG("action name %s", (char *)key); - action_name = eina_stringshare_add((char *)key); - xmlFree(key); + if (NULL != key) { + VC_ELM_LOG_DBG("action name %s", (char *)key); + action_name = eina_stringshare_add((char *)key); + xmlFree(key); + } else { + VC_ELM_LOG_DBG("action name is NULL"); + } } else if (0 == xmlStrcmp(tmp->name, XML_CAST VC_ELM_TAG_ACTION_COMMAND)) { const char *action_command = NULL; key = xmlNodeGetContent(tmp); - VC_ELM_LOG_DBG("action command %s", (char *)key); - if (action_name != NULL) { - action_command = eina_stringshare_add((char *)key); - eina_hash_add(g_config_action_map, action_name, action_command); + if (NULL != key) { + VC_ELM_LOG_DBG("action command %s", (char *)key); + if (action_name != NULL) { + action_command = eina_stringshare_add((char *)key); + eina_hash_add(g_config_action_map, action_name, action_command); + } + xmlFree(key); + } else { + VC_ELM_LOG_DBG("action command is NULL"); } - xmlFree(key); } tmp = tmp->next; } @@ -2378,9 +2386,13 @@ int _vc_elm_core_read_xml_data() while (tmp != NULL) { if (0 == xmlStrcmp(tmp->name, XML_CAST VC_ELM_TAG_WIDGET_NAME)) { key = xmlNodeGetContent(tmp); - VC_ELM_LOG_DBG("widget name %s", (char *)key); - widget_name = eina_stringshare_add((char *)key); - xmlFree(key); + if (NULL != key) { + VC_ELM_LOG_DBG("widget name %s", (char *)key); + widget_name = eina_stringshare_add((char *)key); + xmlFree(key); + } else { + VC_ELM_LOG_DBG("widget name is NULL"); + } } else if (0 == xmlStrcmp(tmp->name, XML_CAST VC_ELM_TAG_WIDGET_ACTIONS)) { xmlNodePtr actions = tmp->xmlChildrenNode; Eina_List *actions_list = NULL; @@ -2388,10 +2400,14 @@ int _vc_elm_core_read_xml_data() if (0 == xmlStrcmp(actions->name, XML_CAST VC_ELM_TAG_ACTION_NAME)) { const char *action_tag = NULL; key = xmlNodeGetContent(actions); - VC_ELM_LOG_DBG("widget action name %s", (char*)key); - action_tag = eina_stringshare_add((char*)key); - actions_list = eina_list_append(actions_list, action_tag); - xmlFree(key); + if (NULL != key) { + VC_ELM_LOG_DBG("widget action name %s", (char*)key); + action_tag = eina_stringshare_add((char*)key); + actions_list = eina_list_append(actions_list, action_tag); + xmlFree(key); + } else { + VC_ELM_LOG_DBG("widget action name is NULL"); + } } actions = actions->next; } @@ -2408,26 +2424,38 @@ int _vc_elm_core_read_xml_data() while (child != NULL) { if (0 == xmlStrcmp(child->name, XML_CAST VC_ELM_TAG_HINT_SHOW)) { key = xmlNodeGetContent(child); - VC_ELM_LOG_DBG("hint show %s", (char*)key); - if (g_tooltips_show) - free(g_tooltips_show); - g_tooltips_show = strdup((char*)key); - xmlFree(key); + if (NULL != key) { + VC_ELM_LOG_DBG("hint show %s", (char*)key); + if (g_tooltips_show) + free(g_tooltips_show); + g_tooltips_show = strdup((char*)key); + xmlFree(key); + } else { + VC_ELM_LOG_DBG("hint show is NULL"); + } } else if (0 == xmlStrcmp(child->name, XML_CAST VC_ELM_TAG_HINT_DIRECTION)) { key = xmlNodeGetContent(child); - VC_ELM_LOG_DBG("hint direction %s", (char*)key); - if (g_tooltips_default_direction) - free(g_tooltips_default_direction); - g_tooltips_default_direction = strdup((char*)key); - xmlFree(key); + if (NULL != key) { + VC_ELM_LOG_DBG("hint direction %s", (char*)key); + if (g_tooltips_default_direction) + free(g_tooltips_default_direction); + g_tooltips_default_direction = strdup((char*)key); + xmlFree(key); + } else { + VC_ELM_LOG_DBG("hint direction is NULL"); + } } else if (0 == xmlStrcmp(child->name, XML_CAST VC_ELM_TAG_HINT_IMAGE)) { key = xmlNodeGetContent(child); - VC_ELM_LOG_DBG("hint image %s", (char*)key); - if (g_tooltips_image_path) - free(g_tooltips_image_path); - charkey = tzplatform_mkpath(TZ_SYS_RO_SHARE, (const char*)key); - g_tooltips_image_path = strdup(charkey); - xmlFree(key); + if (NULL != key) { + VC_ELM_LOG_DBG("hint image %s", (char*)key); + if (g_tooltips_image_path) + free(g_tooltips_image_path); + charkey = tzplatform_mkpath(TZ_SYS_RO_SHARE, (const char*)key); + g_tooltips_image_path = strdup(charkey); + xmlFree(key); + } else { + VC_ELM_LOG_DBG("hint image is NULL"); + } } child = child->next; } @@ -2439,16 +2467,28 @@ int _vc_elm_core_read_xml_data() while (cur != NULL) { if (0 == xmlStrcmp(cur->name, XML_CAST VC_ELM_TAG_TIZEN_VERSION)) { key = xmlNodeGetContent(cur); - VC_ELM_LOG_DBG("hint direction %s", (char*)key); - xmlFree(key); + if (NULL != key) { + VC_ELM_LOG_DBG("hint direction %s", (char*)key); + xmlFree(key); + } else { + VC_ELM_LOG_DBG("hint direction is NULL"); + } } else if (0 == xmlStrcmp(cur->name, XML_CAST VC_ELM_TAG_PROFILE)) { key = xmlNodeGetContent(cur); - VC_ELM_LOG_DBG("hint direction %s", (char*)key); - xmlFree(key); + if (NULL != key) { + VC_ELM_LOG_DBG("hint direction %s", (char*)key); + xmlFree(key); + } else { + VC_ELM_LOG_DBG("hint direction is NULL"); + } } else if (0 == xmlStrcmp(cur->name, XML_CAST VC_ELM_TAG_EFL_VERSION)) { key = xmlNodeGetContent(cur); - VC_ELM_LOG_DBG("hint direction %s", (char*)key); - xmlFree(key); + if (NULL != key) { + VC_ELM_LOG_DBG("hint direction %s", (char*)key); + xmlFree(key); + } else { + VC_ELM_LOG_DBG("hint direction is NULL"); + } } cur = cur->next; } -- 2.7.4