Fix the LE scan filter malfunction 66/223766/1
authorinjun.yang <injun.yang@samsung.com>
Tue, 4 Feb 2020 00:59:05 +0000 (09:59 +0900)
committerinjun.yang <injun.yang@samsung.com>
Tue, 4 Feb 2020 00:59:05 +0000 (09:59 +0900)
Change-Id: I0372a8e1d8cbe89da582805ce74b62f18da6eb35
Signed-off-by: injun.yang <injun.yang@samsung.com>
bt-service-adaptation/services/adapter/bt-service-core-adapter-le.c

index c338d84..a4fda40 100644 (file)
@@ -549,7 +549,7 @@ static int __bt_get_ad_data_by_type(const char *in_data, int in_len,
        if (in_data == NULL || data == NULL || data_len == NULL)
                return BLUETOOTH_ERROR_INTERNAL;
 
-       if (in_len < 0)
+       if (in_len <= 0)
                return BLUETOOTH_ERROR_INTERNAL;
 
        int i;
@@ -576,7 +576,7 @@ static int __bt_get_ad_data_by_type(const char *in_data, int in_len,
 
        if (i > BLUETOOTH_ADVERTISING_DATA_LENGTH_MAX - 1
                        || i + len > in_len
-                       || i + len > BLUETOOTH_ADVERTISING_DATA_LENGTH_MAX - 1) {
+                       || i + len > BLUETOOTH_ADVERTISING_DATA_LENGTH_MAX) {
                BT_ERR("Invalid advertising data");
                return BLUETOOTH_ERROR_INTERNAL;
        } else if (len == 0) {
@@ -749,8 +749,7 @@ static gboolean __bt_check_scan_result_with_filter(const char *device_address,
                                name[data_len] = '\0';
                                g_free(data);
                                data = NULL;
-                               if (strncmp(filter_data->device_name,
-                                               name, data_len) == 0) {
+                               if (g_strrstr(name, filter_data->device_name) != NULL) {
                                        BT_INFO("Device Name is matched in adv data.");
                                        is_matched = TRUE;
                                }
@@ -767,8 +766,7 @@ static gboolean __bt_check_scan_result_with_filter(const char *device_address,
                                name[data_len] = '\0';
                                g_free(data);
                                data = NULL;
-                               if (strncmp(filter_data->device_name,
-                                               name, data_len) == 0) {
+                               if (g_strrstr(name, filter_data->device_name) != NULL) {
                                        BT_INFO("Device Name is matched in scan data.");
                                        is_matched = TRUE;
                                }