Add memory check before referencing 01/76001/2 accepted/tizen/common/20160622.150112 accepted/tizen/ivi/20160623.122757 accepted/tizen/mobile/20160623.122707 accepted/tizen/tv/20160623.122725 accepted/tizen/wearable/20160623.122741 submit/tizen/20160622.104100
authorKwangyoun Kim <ky85.kim@samsung.com>
Wed, 22 Jun 2016 10:04:10 +0000 (19:04 +0900)
committerKwangyoun Kim <ky85.kim@samsung.com>
Wed, 22 Jun 2016 10:07:28 +0000 (19:07 +0900)
Change-Id: I8d60532a51208e9c260d634434f1aa34049dbbca

common/vc_command.c
common/vc_config_mgr.c
server/vcd_client_data.c

index 9adfaf4..f6e31c5 100644 (file)
@@ -386,6 +386,11 @@ int vc_cmd_list_foreach_commands(vc_cmd_list_h vc_cmd_list, vc_cmd_list_cb callb
        iter = g_slist_nth(list->list, 0);
 
        for (i = 0; i < count; i++) {
+               if (NULL == iter) {
+                       SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] No command in list");
+                       return VC_ERROR_OPERATION_FAILED;
+               }
+
                temp_cmd = iter->data;
 
                if (NULL != temp_cmd) {
@@ -441,6 +446,10 @@ int vc_cmd_list_filter_by_type(vc_cmd_list_h original, int type, vc_cmd_list_h*
        iter = g_slist_nth(list->list, 0);
 
        for (i = 0; i < count; i++) {
+               if (NULL == iter) {
+                       SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] No command in list");
+                       return VC_ERROR_OPERATION_FAILED;
+               }
                if (NULL != iter->data) {
                        iter_cmd = iter->data;
 
index b97959a..f8caf11 100644 (file)
@@ -118,6 +118,11 @@ int __vc_config_mgr_check_engine_is_valid(const char* engine_id)
        }
 
        iter = g_slist_nth(g_engine_list, 0);
+       if (NULL == iter) {
+               SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] No engine in list");
+               return -1;
+       }
+
        engine_info = iter->data;
 
        if (NULL == engine_info) {
index e6d66b6..69bac43 100644 (file)
@@ -820,7 +820,9 @@ int __show_client_list()
 
                        data = iter->data;
 
-                       SLOG(LOG_DEBUG, TAG_VCD, "[%dth] pid(%d)", i, data->pid);
+                       if (NULL != data) {
+                               SLOG(LOG_DEBUG, TAG_VCD, "[%dth] pid(%d)", i, data->pid);
+                       }
                        iter = g_slist_next(iter);
                }
        }
@@ -843,7 +845,9 @@ int __show_client_list()
 
                        widget_data = iter->data;
 
-                       SLOG(LOG_DEBUG, TAG_VCD, "[%dth] pid(%d)", i, widget_data->pid);
+                       if (NULL != widget_data) {
+                               SLOG(LOG_DEBUG, TAG_VCD, "[%dth] pid(%d)", i, widget_data->pid);
+                       }
                        iter = g_slist_next(iter);
                }
        }
@@ -872,11 +876,12 @@ int __show_command_list(GSList* cmd_group)
                                break;
 
                        data = iter->data;
-
-                       if (NULL != data->parameter) {
-                               SLOG(LOG_DEBUG, TAG_VCD, "[%dth] command(%s) parameter(%s) key(%d)", i, data->command, data->parameter, data->key);
-                       } else {
-                               SLOG(LOG_DEBUG, TAG_VCD, "[%dth] command(%s) key(%d)", i, data->command, data->key);
+                       if (NULL != data) {
+                               if (NULL != data->parameter) {
+                                       SLOG(LOG_DEBUG, TAG_VCD, "[%dth] command(%s) parameter(%s) key(%d)", i, data->command, data->parameter, data->key);
+                               } else {
+                                       SLOG(LOG_DEBUG, TAG_VCD, "[%dth] command(%s) key(%d)", i, data->command, data->key);
+                               }
                        }
                        iter = g_slist_next(iter);
                }
@@ -902,9 +907,10 @@ GSList* __client_get_item(const int pid)
                                break;
 
                        data = iter->data;
-
-                       if (pid == data->pid)
-                               return iter;
+                       if (NULL != data) {
+                               if (pid == data->pid)
+                                       return iter;
+                       }
 
                        iter = g_slist_next(iter);
                }
@@ -929,8 +935,10 @@ vc_client_info_s* __client_get_element(int pid)
 
                        data = iter->data;
 
-                       if (pid == data->pid)
-                               return data;
+                       if (NULL != data) {
+                               if (pid == data->pid)
+                                       return data;
+                       }
 
                        iter = g_slist_next(iter);
                }
@@ -1183,8 +1191,10 @@ GSList* __widget_get_item(int pid)
 
                        data = iter->data;
 
-                       if (pid == data->pid)
-                               return iter;
+                       if (NULL != data) {
+                               if (pid == data->pid)
+                                       return iter;
+                       }
 
                        iter = g_slist_next(iter);
                }