Apply comments
authorWootak Jung <wootak.jung@samsung.com>
Thu, 4 Mar 2021 01:29:09 +0000 (10:29 +0900)
committerWootak Jung <wootak.jung@samsung.com>
Sun, 11 Apr 2021 23:40:16 +0000 (08:40 +0900)
src/tds-api.c
src/tds-provider-service.c

index 070ca923abcea7a13ab751b2643c988d37255183..a7c473947c8cffc3413b77b6e9e82870ded2e9e7 100644 (file)
@@ -73,10 +73,10 @@ static int __tds_get_ad_data_by_type(char *in_data, int in_len,
                char in_type, char **data, int *data_len)
 {
        if (in_data == NULL || data == NULL || data_len == NULL)
-               return TDS_ERROR_INTERNAL;
+               return TDS_ERROR_INVALID_PARAMETER;
 
        if (in_len < 0)
-               return TDS_ERROR_INTERNAL;
+               return TDS_ERROR_INVALID_PARAMETER;
 
        int i;
        int len = 0;
@@ -86,7 +86,7 @@ static int __tds_get_ad_data_by_type(char *in_data, int in_len,
                len = in_data[i];
                if (len <= 0 || i + 1 >= in_len) {
                        TDS_ERR("Invalid advertising data");
-                       return TDS_ERROR_INTERNAL;
+                       return TDS_ERROR_INVALID_PARAMETER;
                }
 
                type = in_data[i + 1];
@@ -102,7 +102,7 @@ static int __tds_get_ad_data_by_type(char *in_data, int in_len,
 
        if (i + len > in_len) {
                TDS_ERR("Invalid advertising data");
-               return TDS_ERROR_INTERNAL;
+               return TDS_ERROR_INVALID_PARAMETER;
        } else if (len == 0) {
                //TDS_DBG("AD Type 0x%02x data is not set. skip", in_type);
                *data = NULL;
@@ -132,7 +132,7 @@ static int __tds_parse_transport_blocks(tds_role_e search_role,
 
        if (data_len < 3) {
                TDS_ERR("Invalid TDS data, can not process!!");
-               return TDS_ERROR_INTERNAL;
+               return TDS_ERROR_INVALID_PARAMETER;
        }
 
        while (index < data_len) {
@@ -224,6 +224,11 @@ static void __tds_scan_result_cb(int result,
        char *data = NULL;
        int data_len = 0;
 
+       if (scan_data == NULL) {
+               TDS_ERR("scan_data is NULL");
+               return;
+       }
+
        __tds_get_ad_data_by_type(scan_info->adv_data, scan_info->adv_data_len,
                        TRANSPORT_DISCOVERY_DATA_AD_TYPE,
                        &data, &data_len);
@@ -245,6 +250,12 @@ int _tds_start_scan(tds_role_e search_role, bt_tds_provider_scan_result_cb callb
 {
        TDS_CHECK_INPUT_PARAMETER(callback);
 
+       if (scan_data != NULL) {
+               TDS_INFO("scan_data already allocated. Free it first");
+               g_free(scan_data);
+               scan_data = NULL;
+       }
+
        scan_data = g_malloc0(sizeof(struct tds_scan_data_s));
        scan_data->search_role = search_role;
        scan_data->callback = callback;
@@ -256,6 +267,7 @@ int _tds_start_scan(tds_role_e search_role, bt_tds_provider_scan_result_cb callb
 int _tds_stop_scan()
 {
        g_free(scan_data);
+       scan_data = NULL;
 
        return bt_adapter_le_stop_scan();
 }
index a42653c685c637a03c95c0f7b050fa4d718432fd..4ad9d92f007e0d50693b4fa17844e3322e119d41 100644 (file)
 #include "tds-provider-aware.h"
 #include "tds-api.h"
 
-static char *g_local_address;
+static char *g_local_address = NULL;
 
 static int __tds_service_start()
 {
        int ret;
 
+       if (g_local_address != NULL) {
+               TDS_INFO("g_local_address already allocated. Free it first");
+               g_free(g_local_address);
+               g_local_address = NULL;
+       }
+
        ret = bt_adapter_get_address(&g_local_address);
        if (ret != BT_ERROR_NONE) {
                TDS_ERR("bt_adapter_get_address() failed. ret: %d", ret);
@@ -142,8 +148,10 @@ int _tds_service_disable()
        int ret;
        TDS_DBG("Enter");
 
-       if (g_local_address)
+       if (g_local_address) {
                free(g_local_address);
+               g_local_address = NULL;
+       }
 
        ret = bt_adapter_unset_state_changed_cb();
        if (ret != BT_ERROR_NONE) {