From 5cb7077aefb1680fbd4af70794899dbbbbbffb2c Mon Sep 17 00:00:00 2001 From: Anupam Roy Date: Thu, 12 Jul 2018 21:04:03 +0530 Subject: [PATCH] Coverity Fixes in BTAPI and BTHAL This patch fixes below Coverity issues:- 859630, 859619, 859613, 859641, 859629 859628, 859625, 859623, 859615, 859608 859603, 859588, 859643, 859632, 859626 859597, 859639, 859591, 859606 Change-Id: Ic81ffc7e6b98144af30f6e72f0a65e4f1eeff920 Signed-off-by: Anupam Roy --- bt-api/bt-gatt-client.c | 3 +- bt-api/bt-gatt-service.c | 70 ++++++++++++++-------- bt-api/bt-map-client.c | 2 - .../bluez_hal/src/bt-hal-a2dp-sink-dbus-handler.c | 1 + bt-oal/bluez_hal/src/bt-hal-av-dbus-handler.c | 1 + .../bluez_hal/src/bt-hal-avrcp-tg-dbus-handler.c | 1 + 6 files changed, 51 insertions(+), 27 deletions(-) diff --git a/bt-api/bt-gatt-client.c b/bt-api/bt-gatt-client.c index 9daa2eb..c0f5620 100755 --- a/bt-api/bt-gatt-client.c +++ b/bt-api/bt-gatt-client.c @@ -2412,7 +2412,7 @@ BT_EXPORT_API int bluetooth_gatt_client_set_service_change_watcher( if (_bluetooth_gatt_check_service_change_watcher_address(address) == TRUE) { BT_INFO("The watcher is already set"); - return BLUETOOTH_ERROR_NONE; + goto done; } if (service_monitor_list == NULL) { @@ -2452,6 +2452,7 @@ BT_EXPORT_API int bluetooth_gatt_client_set_service_change_watcher( } } +done: BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); return result; } diff --git a/bt-api/bt-gatt-service.c b/bt-api/bt-gatt-service.c index 93b28d0..115d1e6 100644 --- a/bt-api/bt-gatt-service.c +++ b/bt-api/bt-gatt-service.c @@ -1922,7 +1922,7 @@ BT_EXPORT_API int bluetooth_gatt_add_new_characteristic( return BLUETOOTH_ERROR_INVALID_PARAM; node_info = __bt_gatt_create_method_node_info( - characteristics_introspection_xml); + characteristics_introspection_xml); if (node_info == NULL) return BLUETOOTH_ERROR_INTERNAL; @@ -1930,9 +1930,9 @@ BT_EXPORT_API int bluetooth_gatt_add_new_characteristic( BT_DBG("gatt characteristic path is [%s]", path); object_id = g_dbus_connection_register_object(g_conn, path, - node_info->interfaces[0], - &char_interface_vtable, - NULL, NULL, &error); + node_info->interfaces[0], + &char_interface_vtable, + NULL, NULL, &error); g_dbus_node_info_unref(node_info); if (object_id == 0) { @@ -1972,9 +1972,9 @@ BT_EXPORT_API int bluetooth_gatt_add_new_characteristic( inner_builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}")); g_variant_builder_add(inner_builder, "{sv}", "UUID", - g_variant_new("s", char_uuid)); + g_variant_new("s", char_uuid)); g_variant_builder_add(inner_builder, "{sv}", "Service", - g_variant_new("o", svc_path)); + g_variant_new("o", svc_path)); builder2 = g_variant_builder_new(G_VARIANT_TYPE("as")); @@ -1983,23 +1983,30 @@ BT_EXPORT_API int bluetooth_gatt_add_new_characteristic( flags_val = g_variant_new("as", builder2); g_variant_builder_add(inner_builder, "{sv}", "Flags", - flags_val); + flags_val); builder3 = g_variant_builder_new(G_VARIANT_TYPE("ao")); g_variant_builder_add(inner_builder, "{sv}", "Descriptors", - g_variant_new("ao", builder3)); + g_variant_new("ao", builder3)); g_variant_builder_add(builder, "{sa{sv}}", - GATT_CHAR_INTERFACE, - inner_builder); + GATT_CHAR_INTERFACE, + inner_builder); g_dbus_connection_emit_signal(g_conn, NULL, "/", - "org.freedesktop.Dbus.ObjectManager", - "InterfacesAdded", - g_variant_new("(oa{sa{sv}})", + "org.freedesktop.Dbus.ObjectManager", + "InterfacesAdded", + g_variant_new("(oa{sa{sv}})", path, builder), - &error); + &error); + + if (error) { + /* dBUS gives error cause */ + BT_ERR("Could not Emit Signal: errCode[%x], message[%s]", + error->code, error->message); + g_clear_error(&error); + } *char_path = g_strdup(path); @@ -2062,7 +2069,7 @@ BT_EXPORT_API int bluetooth_gatt_set_characteristic_value( g_variant_builder_add(builder1, "y", char_value[i]); char_val = g_variant_new("ay", builder1); - g_variant_builder_add(inner_builder, "{sv}", "Value", char_val); + g_variant_builder_add(inner_builder, "{sv}", "Value", char_val); g_variant_builder_add(builder, "{sa{sv}}", GATT_CHAR_INTERFACE, @@ -2072,9 +2079,15 @@ BT_EXPORT_API int bluetooth_gatt_set_characteristic_value( "org.freedesktop.Dbus.ObjectManager", "InterfacesAdded", g_variant_new("(oa{sa{sv}})", - char_info->char_path, builder), + char_info->char_path, builder), &error); + if (error) { + /* dBUS gives error cause */ + BT_ERR("Could not Emit Signal: errCode[%x], message[%s]", + error->code, error->message); + g_clear_error(&error); + } g_variant_builder_unref(inner_builder); g_variant_builder_unref(builder); g_variant_builder_unref(builder1); @@ -2255,15 +2268,22 @@ BT_EXPORT_API int bluetooth_gatt_set_descriptor_value( g_variant_builder_add(inner_builder, "{sv}", "Value", desc_val); g_variant_builder_add(builder, "{sa{sv}}", - GATT_DESC_INTERFACE, - inner_builder); + GATT_DESC_INTERFACE, + inner_builder); g_dbus_connection_emit_signal(g_conn, NULL, "/", - "org.freedesktop.Dbus.ObjectManager", - "InterfacesAdded", - g_variant_new("(oa{sa{sv}})", + "org.freedesktop.Dbus.ObjectManager", + "InterfacesAdded", + g_variant_new("(oa{sa{sv}})", desc_info->desc_path, builder), - &error); + &error); + + if (error != NULL) { + BT_ERR("D-Bus API failure: errCode[%x], \ + message[%s]", + error->code, error->message); + g_clear_error(&error); + } g_variant_builder_unref(inner_builder); g_variant_builder_unref(builder); @@ -2431,7 +2451,6 @@ BT_EXPORT_API int bluetooth_gatt_update_characteristic( update_value = g_variant_new("ay", inner_builder); - outer_builder = g_variant_builder_new(G_VARIANT_TYPE_ARRAY); g_variant_builder_add(outer_builder, "{sv}", "Value", update_value); @@ -2810,7 +2829,8 @@ BT_EXPORT_API int bluetooth_gatt_server_init(int *instance_id, gatt_server_cb_fu if (ret != BLUETOOTH_ERROR_NONE && ret != BLUETOOTH_ERROR_ALREADY_INITIALIZED) { BT_ERR("Fail to init the event handler"); - return ret; + BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); + goto done; } ret = _bt_send_request(BT_BLUEZ_SERVICE, BT_GATT_SERVER_REGISTER, @@ -2825,6 +2845,7 @@ BT_EXPORT_API int bluetooth_gatt_server_init(int *instance_id, gatt_server_cb_fu BT_INFO("GATT Server Registered successfully: App Instance ID [%d]", *instance_id); } +done: BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); BT_INFO("GATT Server instance ID obtained [%d]", *instance_id); @@ -2918,6 +2939,7 @@ BT_EXPORT_API int bluetooth_gatt_server_add_new_characteristic(const char *char_ BT_DBG("GATT Server Add characteristic success result [%d] char chandle [%d]", result, *char_handle); } + BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); return result; } diff --git a/bt-api/bt-map-client.c b/bt-api/bt-map-client.c index 23e546f..33e08a1 100644 --- a/bt-api/bt-map-client.c +++ b/bt-api/bt-map-client.c @@ -134,7 +134,6 @@ BT_EXPORT_API int bluetooth_map_client_set_folder( if (result != BLUETOOTH_ERROR_NONE) { BT_ERR("bluetooth_map_client_set_folder failed"); - return BLUETOOTH_ERROR_INTERNAL; } BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); @@ -283,7 +282,6 @@ BT_EXPORT_API int bluetooth_map_client_update_inbox(bt_map_client_session_info_s if (result != BLUETOOTH_ERROR_NONE) { BT_ERR("bluetooth_map_client_update_inbox failed"); - return BLUETOOTH_ERROR_INTERNAL; } BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); diff --git a/bt-oal/bluez_hal/src/bt-hal-a2dp-sink-dbus-handler.c b/bt-oal/bluez_hal/src/bt-hal-a2dp-sink-dbus-handler.c index 4f08b1b..a507a66 100644 --- a/bt-oal/bluez_hal/src/bt-hal-a2dp-sink-dbus-handler.c +++ b/bt-oal/bluez_hal/src/bt-hal-a2dp-sink-dbus-handler.c @@ -127,6 +127,7 @@ bt_status_t _bt_hal_dbus_handler_a2dp_sink_connect(bt_bdaddr_t *bd_addr) if (ret != BT_HAL_ERROR_NONE) { ERR("_bt_hal_connect_profile(A2DP source) Error"); + g_free(address); return BT_STATUS_FAIL; } diff --git a/bt-oal/bluez_hal/src/bt-hal-av-dbus-handler.c b/bt-oal/bluez_hal/src/bt-hal-av-dbus-handler.c index 91e41e5..847c55e 100644 --- a/bt-oal/bluez_hal/src/bt-hal-av-dbus-handler.c +++ b/bt-oal/bluez_hal/src/bt-hal-av-dbus-handler.c @@ -128,6 +128,7 @@ bt_status_t _bt_hal_dbus_handler_av_connect(bt_bdaddr_t *bd_addr) if (ret != BT_HAL_ERROR_NONE) { ERR("_bt_hal_connect_profile(A2DP) Error"); + g_free(address); return BT_STATUS_FAIL; } return BT_STATUS_SUCCESS; diff --git a/bt-oal/bluez_hal/src/bt-hal-avrcp-tg-dbus-handler.c b/bt-oal/bluez_hal/src/bt-hal-avrcp-tg-dbus-handler.c index 01a044b..de35ec1 100644 --- a/bt-oal/bluez_hal/src/bt-hal-avrcp-tg-dbus-handler.c +++ b/bt-oal/bluez_hal/src/bt-hal-avrcp-tg-dbus-handler.c @@ -525,6 +525,7 @@ bt_status_t _bt_hal_dbus_handler_avrcp_tg_connect(bt_bdaddr_t *bd_addr) __bt_hal_avrcp_tg_connect_cb, address); if (ret != BT_HAL_ERROR_NONE) { ERR("_bt_hal_connect_profile(AVRCP Controller) Error"); + g_free(address); return BT_STATUS_FAIL; } -- 2.7.4