From 9d763ae26c59038e9e357efdd9e6e0198c81f866 Mon Sep 17 00:00:00 2001 From: "srinivasa.m" Date: Fri, 4 Jan 2019 17:36:29 +0530 Subject: [PATCH] Coverity issues Fix:Integrating tizen 5.0 Fixes Change-Id: Id19c9bb54c376afe0558dee179f5fe9e08c65024 Signed-off-by: srinivasa.m --- .../rotation_vector/fusion_utils/orientation_filter.cpp | 1 + src/sensorctl/info.cpp | 6 +++++- src/sensorctl/sensor_adapter.cpp | 16 ++++++++++++++-- src/sensorctl/sensorctl.cpp | 6 +++--- src/sensorctl/test_bench.h | 3 +++ src/sensorctl/testcase/sensor_listener.cpp | 15 ++++++++++++--- src/sensorctl/testcase/sensor_provider.cpp | 2 +- src/server/server_channel_handler.cpp | 17 ++++++++++++----- src/shared/message.cpp | 9 +++++++++ 9 files changed, 60 insertions(+), 15 deletions(-) mode change 100644 => 100755 src/sensor/rotation_vector/fusion_utils/orientation_filter.cpp mode change 100644 => 100755 src/sensorctl/info.cpp mode change 100644 => 100755 src/sensorctl/sensor_adapter.cpp mode change 100644 => 100755 src/sensorctl/sensorctl.cpp mode change 100644 => 100755 src/sensorctl/test_bench.h mode change 100644 => 100755 src/sensorctl/testcase/sensor_listener.cpp mode change 100644 => 100755 src/sensorctl/testcase/sensor_provider.cpp mode change 100644 => 100755 src/server/server_channel_handler.cpp diff --git a/src/sensor/rotation_vector/fusion_utils/orientation_filter.cpp b/src/sensor/rotation_vector/fusion_utils/orientation_filter.cpp old mode 100644 new mode 100755 index 43ea867..2b03cf0 --- a/src/sensor/rotation_vector/fusion_utils/orientation_filter.cpp +++ b/src/sensor/rotation_vector/fusion_utils/orientation_filter.cpp @@ -65,6 +65,7 @@ orientation_filter::orientation_filter() m_var_azimuth = vec; m_gyro.m_time_stamp = 0; + m_gyro_dt = 0; } template diff --git a/src/sensorctl/info.cpp b/src/sensorctl/info.cpp old mode 100644 new mode 100755 index 149b98c..43b73f1 --- a/src/sensorctl/info.cpp +++ b/src/sensorctl/info.cpp @@ -20,6 +20,7 @@ #include "info.h" #include +#include #include #include @@ -44,7 +45,10 @@ bool info_manager::run(int argc, char *argv[]) sensord_get_sensor_list(type, &sensors, &count); show_info(sensors, count); - delete sensors; + if (sensors) { + free(sensors); + sensors = NULL; + } return true; } diff --git a/src/sensorctl/sensor_adapter.cpp b/src/sensorctl/sensor_adapter.cpp old mode 100644 new mode 100755 index 13bc4e5..2ba6f59 --- a/src/sensorctl/sensor_adapter.cpp +++ b/src/sensorctl/sensor_adapter.cpp @@ -53,39 +53,51 @@ bool sensor_adapter::get_handle(sensor_info info, int &handle) { int err; int count; - sensor_t *sensors; + sensor_t *sensors = NULL; err = sensord_get_sensors(info.type, &sensors, &count); ASSERT_EQ(err, 0); handle = sensord_connect(sensors[info.index]); + ASSERT_FREE((handle < 0), sensors); ASSERT_GE(handle, 0); + free(sensors); + sensors = NULL; + return true; } bool sensor_adapter::start(sensor_info info, int &handle) { - sensor_t *sensors; + sensor_t *sensors = NULL; int count; int err; bool ret; err = sensord_get_sensors(info.type, &sensors, &count); ASSERT_EQ(err, 0); + + ASSERT_FREE((info.index >= count), sensors); ASSERT_LT(info.index, count); + + ASSERT_FREE((info.index < 0), sensors); ASSERT_GE(info.index, 0); handle = sensord_connect(sensors[info.index]); + ASSERT_FREE((handle < 0), sensors); ASSERT_GE(handle, 0); ret = sensord_register_event(handle, SENSOR_EVENT(info.type), info.interval, info.batch_latency, info.cb, NULL); + ASSERT_FREE((ret != true), sensors); ASSERT_TRUE(ret); ret = sensord_start(handle, info.powersave); + ASSERT_FREE((ret != true), sensors); ASSERT_TRUE(ret); free(sensors); + sensors = NULL; return true; } diff --git a/src/sensorctl/sensorctl.cpp b/src/sensorctl/sensorctl.cpp old mode 100644 new mode 100755 index a35e286..415960f --- a/src/sensorctl/sensorctl.cpp +++ b/src/sensorctl/sensorctl.cpp @@ -47,11 +47,11 @@ static sensor_manager *create_manager(char *command) if (!strcmp(command, "test")) manager = new(std::nothrow) tester_manager; - if (!strcmp(command, "inject")) + else if (!strcmp(command, "inject")) manager = new(std::nothrow) injector_manager; - if (!strcmp(command, "info")) + else if (!strcmp(command, "info")) manager = new(std::nothrow) info_manager; - if (!strcmp(command, "loopback")) + else if (!strcmp(command, "loopback")) manager = new(std::nothrow) loopback_manager; if (!manager) { diff --git a/src/sensorctl/test_bench.h b/src/sensorctl/test_bench.h old mode 100644 new mode 100755 index f70fdeb..f35280f --- a/src/sensorctl/test_bench.h +++ b/src/sensorctl/test_bench.h @@ -67,6 +67,9 @@ do { \ } \ } while (0) +#define ASSERT_FREE(expr, X) \ + do { if (expr) { free (X); X = NULL; } } while (0) + #define ASSERT_TRUE(condition) ASSERT(condition, ==, true) #define ASSERT_FALSE(condition) ASSERT(condition, ==, false) #define ASSERT_EQ(left, right) ASSERT(left, ==, right) diff --git a/src/sensorctl/testcase/sensor_listener.cpp b/src/sensorctl/testcase/sensor_listener.cpp old mode 100644 new mode 100755 index f92d33a..e7a7c74 --- a/src/sensorctl/testcase/sensor_listener.cpp +++ b/src/sensorctl/testcase/sensor_listener.cpp @@ -59,6 +59,7 @@ TESTCASE(sensor_listener, get_sensors_p_1) err = sensord_get_sensors(ACCELEROMETER_SENSOR, &sensors, &count); ASSERT_EQ(err, 0); + ASSERT_FREE((count < 0), sensors); ASSERT_GT(count, 0); free(sensors); @@ -90,8 +91,8 @@ TESTCASE(sensor_listener, all_api_p_1) bool ret; int handle; sensor_t sensor; - sensor_t *list; - int count; + sensor_t *list = NULL; + int count = 0; called = false; @@ -102,29 +103,37 @@ TESTCASE(sensor_listener, all_api_p_1) ASSERT_EQ(err, 0); handle = sensord_connect(sensor); - ASSERT_EQ(err, 0); + ASSERT_FREE(((handle != 0) && list), list); + ASSERT_EQ(handle, 0); ret = sensord_register_event(handle, 1, 100, 100, event_cb, NULL); + ASSERT_FREE(((ret != true) && list), list); ASSERT_TRUE(ret); ret = sensord_start(handle, 0); + ASSERT_FREE(((ret != true) && list), list); ASSERT_TRUE(ret); ret = sensord_change_event_interval(handle, 0, 100); + ASSERT_FREE(((ret != true) && list), list); ASSERT_TRUE(ret); ret = sensord_change_event_max_batch_latency(handle, 0, 100); + ASSERT_FREE(((ret != true) && list), list); ASSERT_TRUE(ret); mainloop::run(); ret = sensord_stop(handle); + ASSERT_FREE(((ret != true) && list), list); ASSERT_TRUE(ret); ret = sensord_unregister_event(handle, 1); + ASSERT_FREE(((ret != true) && list), list); ASSERT_TRUE(ret); ret = sensord_disconnect(handle); + ASSERT_FREE(((ret != true) && list), list); ASSERT_TRUE(ret); free(list); diff --git a/src/sensorctl/testcase/sensor_provider.cpp b/src/sensorctl/testcase/sensor_provider.cpp old mode 100644 new mode 100755 index 9c76c21..a163325 --- a/src/sensorctl/testcase/sensor_provider.cpp +++ b/src/sensorctl/testcase/sensor_provider.cpp @@ -86,8 +86,8 @@ static void add_mysensor(void) sensord_provider_set_resolution(provider, 0.01f); sensord_add_provider(provider); - sensord_remove_provider(provider); + sensord_destroy_provider(provider); } diff --git a/src/server/server_channel_handler.cpp b/src/server/server_channel_handler.cpp old mode 100644 new mode 100755 index 2188c61..9375178 --- a/src/server/server_channel_handler.cpp +++ b/src/server/server_channel_handler.cpp @@ -141,13 +141,18 @@ int server_channel_handler::listener_connect(channel *ch, message &msg) msg.disclose((char *)&buf); - sensor_listener_proxy *listener; + sensor_listener_proxy *listener = NULL; listener = new(std::nothrow) sensor_listener_proxy(listener_id, buf.sensor, m_manager, ch); retvm_if(!listener, OP_ERROR, "Failed to allocate memory"); - retvm_if(!has_privileges(ch->get_fd(), listener->get_required_privileges()), - -EACCES, "Permission denied[%d, %s]", - listener_id, m_listeners[listener_id]->get_required_privileges().c_str()); + + if (!has_privileges(ch->get_fd(), listener->get_required_privileges())) { + delete listener; + listener = NULL; + _E("Permission denied[%d, %s]", listener_id, + m_listeners[listener_id]->get_required_privileges().c_str()); + return -EACCES; + } buf.listener_id = listener_id; @@ -155,8 +160,10 @@ int server_channel_handler::listener_connect(channel *ch, message &msg) reply.enclose((const char *)&buf, sizeof(buf)); reply.header()->err = OP_SUCCESS; - if (!ch->send_sync(&reply)) + if (!ch->send_sync(&reply)) { + delete listener; return OP_ERROR; + } _I("Connected sensor_listener[fd(%d) -> id(%u)]", ch->get_fd(), listener_id); m_listeners[listener_id] = listener; diff --git a/src/shared/message.cpp b/src/shared/message.cpp index 2cf7992..e8fd460 100755 --- a/src/shared/message.cpp +++ b/src/shared/message.cpp @@ -40,6 +40,9 @@ message::message(size_t capacity) m_header.type = UNDEFINED_TYPE; m_header.length = m_size; m_header.err = 0; + + for (int i = 0; i < MAX_HEADER_RESERVED; ++i) + m_header.ancillary[i] = NULL; } message::message(const void *msg, size_t sz) @@ -52,6 +55,9 @@ message::message(const void *msg, size_t sz) m_header.type = UNDEFINED_TYPE; m_header.length = m_size; m_header.err = 0; + + for (int i = 0; i < MAX_HEADER_RESERVED; ++i) + m_header.ancillary[i] = NULL; } message::message(const message &msg) @@ -74,6 +80,9 @@ message::message(int error) m_header.type = UNDEFINED_TYPE; m_header.length = 0; m_header.err = error; + + for (int i = 0; i < MAX_HEADER_RESERVED; ++i) + m_header.ancillary[i] = NULL; } message::~message() -- 2.7.4