Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit be15df11 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "diag: Add NULL checks for the mask and mask pointer"

parents 9796c626 b7a06601
Loading
Loading
Loading
Loading
+20 −3
Original line number Original line Diff line number Diff line
@@ -142,6 +142,9 @@ static void diag_send_log_mask_update(uint8_t peripheral, int equip_id)


	mutex_lock(&mask_info->lock);
	mutex_lock(&mask_info->lock);
	for (i = 0; i < MAX_EQUIP_ID; i++, mask++) {
	for (i = 0; i < MAX_EQUIP_ID; i++, mask++) {
		if (!mask->ptr)
			continue;

		if (equip_id != i && equip_id != ALL_EQUIP_ID)
		if (equip_id != i && equip_id != ALL_EQUIP_ID)
			continue;
			continue;


@@ -344,6 +347,8 @@ static void diag_send_msg_mask_update(uint8_t peripheral, int first, int last)
	}
	}


	for (i = 0; i < msg_mask_tbl_count_local; i++, mask++) {
	for (i = 0; i < msg_mask_tbl_count_local; i++, mask++) {
		if (!mask->ptr)
			continue;
		mutex_lock(&driver->msg_mask_lock);
		mutex_lock(&driver->msg_mask_lock);
		if (((mask->ssid_first > first) ||
		if (((mask->ssid_first > first) ||
			(mask->ssid_last_tools < last)) && first != ALL_SSID) {
			(mask->ssid_last_tools < last)) && first != ALL_SSID) {
@@ -579,6 +584,8 @@ static int diag_cmd_get_build_mask(unsigned char *src_buf, int src_len,
	rsp.padding = 0;
	rsp.padding = 0;
	build_mask = (struct diag_msg_mask_t *)msg_bt_mask.ptr;
	build_mask = (struct diag_msg_mask_t *)msg_bt_mask.ptr;
	for (i = 0; i < driver->bt_msg_mask_tbl_count; i++, build_mask++) {
	for (i = 0; i < driver->bt_msg_mask_tbl_count; i++, build_mask++) {
		if (!build_mask->ptr)
			continue;
		if (build_mask->ssid_first != req->ssid_first)
		if (build_mask->ssid_first != req->ssid_first)
			continue;
			continue;
		num_entries = req->ssid_last - req->ssid_first + 1;
		num_entries = req->ssid_last - req->ssid_first + 1;
@@ -656,6 +663,8 @@ static int diag_cmd_get_msg_mask(unsigned char *src_buf, int src_len,
		return -EINVAL;
		return -EINVAL;
	}
	}
	for (i = 0; i < driver->msg_mask_tbl_count; i++, mask++) {
	for (i = 0; i < driver->msg_mask_tbl_count; i++, mask++) {
		if (!mask->ptr)
			continue;
		if ((req->ssid_first < mask->ssid_first) ||
		if ((req->ssid_first < mask->ssid_first) ||
		    (req->ssid_first > mask->ssid_last_tools)) {
		    (req->ssid_first > mask->ssid_last_tools)) {
			continue;
			continue;
@@ -725,6 +734,8 @@ static int diag_cmd_set_msg_mask(unsigned char *src_buf, int src_len,
		return -EINVAL;
		return -EINVAL;
	}
	}
	for (i = 0; i < driver->msg_mask_tbl_count; i++, mask++) {
	for (i = 0; i < driver->msg_mask_tbl_count; i++, mask++) {
		if (!mask->ptr)
			continue;
		if (i < (driver->msg_mask_tbl_count - 1)) {
		if (i < (driver->msg_mask_tbl_count - 1)) {
			mask_next = mask;
			mask_next = mask;
			mask_next++;
			mask_next++;
@@ -1451,7 +1462,8 @@ static int diag_create_msg_mask_table(void)
	mutex_lock(&msg_mask.lock);
	mutex_lock(&msg_mask.lock);
	mutex_lock(&driver->msg_mask_lock);
	mutex_lock(&driver->msg_mask_lock);
	driver->msg_mask_tbl_count = MSG_MASK_TBL_CNT;
	driver->msg_mask_tbl_count = MSG_MASK_TBL_CNT;
	for (i = 0; i < driver->msg_mask_tbl_count; i++, mask++) {
	for (i = 0; (i < driver->msg_mask_tbl_count) && mask;
			i++, mask++) {
		range.ssid_first = msg_mask_tbl[i].ssid_first;
		range.ssid_first = msg_mask_tbl[i].ssid_first;
		range.ssid_last = msg_mask_tbl[i].ssid_last;
		range.ssid_last = msg_mask_tbl[i].ssid_last;
		err = diag_create_msg_mask_table_entry(mask, &range);
		err = diag_create_msg_mask_table_entry(mask, &range);
@@ -1476,7 +1488,8 @@ static int diag_create_build_time_mask(void)
	mutex_lock(&driver->msg_mask_lock);
	mutex_lock(&driver->msg_mask_lock);
	driver->bt_msg_mask_tbl_count = MSG_MASK_TBL_CNT;
	driver->bt_msg_mask_tbl_count = MSG_MASK_TBL_CNT;
	build_mask = (struct diag_msg_mask_t *)msg_bt_mask.ptr;
	build_mask = (struct diag_msg_mask_t *)msg_bt_mask.ptr;
	for (i = 0; i < driver->bt_msg_mask_tbl_count; i++, build_mask++) {
	for (i = 0; (i < driver->bt_msg_mask_tbl_count) && build_mask;
			i++, build_mask++) {
		range.ssid_first = msg_mask_tbl[i].ssid_first;
		range.ssid_first = msg_mask_tbl[i].ssid_first;
		range.ssid_last = msg_mask_tbl[i].ssid_last;
		range.ssid_last = msg_mask_tbl[i].ssid_last;
		err = diag_create_msg_mask_table_entry(build_mask, &range);
		err = diag_create_msg_mask_table_entry(build_mask, &range);
@@ -1599,7 +1612,7 @@ static int diag_create_log_mask_table(void)


	mutex_lock(&log_mask.lock);
	mutex_lock(&log_mask.lock);
	mask = (struct diag_log_mask_t *)(log_mask.ptr);
	mask = (struct diag_log_mask_t *)(log_mask.ptr);
	for (i = 0; i < MAX_EQUIP_ID; i++, mask++) {
	for (i = 0; (i < MAX_EQUIP_ID) && mask; i++, mask++) {
		mask->equip_id = i;
		mask->equip_id = i;
		mask->num_items = LOG_GET_ITEM_NUM(log_code_last_tbl[i]);
		mask->num_items = LOG_GET_ITEM_NUM(log_code_last_tbl[i]);
		mask->num_items_tools = mask->num_items;
		mask->num_items_tools = mask->num_items;
@@ -1994,6 +2007,8 @@ int diag_copy_to_user_msg_mask(char __user *buf, size_t count,
		return -EINVAL;
		return -EINVAL;
	}
	}
	for (i = 0; i < driver->msg_mask_tbl_count; i++, mask++) {
	for (i = 0; i < driver->msg_mask_tbl_count; i++, mask++) {
		if (!mask->ptr)
			continue;
		ptr = mask_info->update_buf;
		ptr = mask_info->update_buf;
		len = 0;
		len = 0;
		mutex_lock(&mask->lock);
		mutex_lock(&mask->lock);
@@ -2068,6 +2083,8 @@ int diag_copy_to_user_log_mask(char __user *buf, size_t count,
		return -EINVAL;
		return -EINVAL;
	}
	}
	for (i = 0; i < MAX_EQUIP_ID; i++, mask++) {
	for (i = 0; i < MAX_EQUIP_ID; i++, mask++) {
		if (!mask->ptr)
			continue;
		ptr = mask_info->update_buf;
		ptr = mask_info->update_buf;
		len = 0;
		len = 0;
		mutex_lock(&mask->lock);
		mutex_lock(&mask->lock);
+2 −2
Original line number Original line Diff line number Diff line
@@ -519,7 +519,7 @@ static void process_ssid_range_report(uint8_t *buf, uint32_t len,
		mask_ptr = (struct diag_msg_mask_t *)msg_mask.ptr;
		mask_ptr = (struct diag_msg_mask_t *)msg_mask.ptr;
		found = 0;
		found = 0;
		for (j = 0; j < driver->msg_mask_tbl_count; j++, mask_ptr++) {
		for (j = 0; j < driver->msg_mask_tbl_count; j++, mask_ptr++) {
			if (!mask_ptr || !ssid_range) {
			if (!mask_ptr->ptr || !ssid_range) {
				found = 1;
				found = 1;
				break;
				break;
			}
			}
@@ -591,7 +591,7 @@ static void diag_build_time_mask_update(uint8_t *buf,
	num_items = range->ssid_last - range->ssid_first + 1;
	num_items = range->ssid_last - range->ssid_first + 1;


	for (i = 0; i < driver->bt_msg_mask_tbl_count; i++, build_mask++) {
	for (i = 0; i < driver->bt_msg_mask_tbl_count; i++, build_mask++) {
		if (!build_mask) {
		if (!build_mask->ptr) {
			found = 1;
			found = 1;
			break;
			break;
		}
		}