client: Check event enum value before using it as array index
authorSangchul Lee <sc11.lee@samsung.com>
Wed, 20 Sep 2023 09:10:46 +0000 (18:10 +0900)
committer이상철/Tizen Platform Lab(SR)/삼성전자 <sc11.lee@samsung.com>
Thu, 21 Sep 2023 06:04:03 +0000 (15:04 +0900)
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
src/client/espp_service_client_event_handler.c
src/client/espp_service_client_msg.c
src/common/espp_service_ipc.h

index b216f69738b5f7da1402bbb9f527bfb1822f22f0..a3f15e590bbb6af1eb4edb9bca47742bdee21ac9 100644 (file)
@@ -230,6 +230,8 @@ static void __func_handler(espp_s *espp, espp_service_data_from_server_s *data,
        ASSERT(espp);
        ASSERT(data);
        ASSERT(result);
+       ASSERT(data->event >= 0);
+       ASSERT(data->event < ESPP_SERVICE_EVENT_CB_NUM);
 
        LOG_WARNING("espp[%p] data[%p, event:%s]", espp, data, events[data->event].str);
 
@@ -265,6 +267,8 @@ gpointer espp_service_client_event_handler_thread_func(gpointer user_data)
                        goto exit;
                }
 
+               ASSERT(rx_data.event >= 0);
+               ASSERT(rx_data.event < ESPP_SERVICE_EVENT_CB_NUM);
                LOG_DEBUG("<<<<< from fd[%d]: event[%s]", espp->event_fd, events[rx_data.event].str);
 
                memset(&tx_data, 0x00, write_len);
index df213a7b2f534f6d2ddcf371d9634eb6600e440c..6130cc280bd73b9d3c2dfb8bd17e7efa78183d06 100644 (file)
@@ -23,6 +23,7 @@ int espp_service_client_msg_parse_params(const char *params, espp_service_event_
        va_list ap;
 
        ASSERT(params);
+       ASSERT(event < ESPP_SERVICE_EVENT_CB_NUM);
 
        va_start(ap, event);
        ret = espp_service_common_parse_json_structured_message(ap, params, events[event].param_formats);
index d791f16e9b52d42a785144c94099db0a3748b4e6..773c01bc2a880392bdc525ff0b9977faaffc9b93 100644 (file)
@@ -67,6 +67,7 @@ typedef enum {
        ESPP_SERVICE_EVENT_CB_BUFFER_STATUS,
        ESPP_SERVICE_EVENT_CB_RESOURCE_CONFLICTED,
        ESPP_SERVICE_EVENT_CB_ERROR,
+       ESPP_SERVICE_EVENT_CB_NUM,
 } espp_service_event_e;
 
 enum {