case GATT_UUID_INCLUDE_SERVICE:
return GATT_NOT_FOUND;
default:
- if (p_cur->p_value->attr_val.attr_max_len < length) {
+ if (p_cur->p_value != NULL && p_cur->p_value->attr_val.attr_max_len < length) {
GATT_TRACE_ERROR("gatts_set_attribute_vaule failt:Invalid value length");
return GATT_INVALID_ATTR_LEN;
- } else {
+ } else if (p_cur->p_value != NULL && p_cur->p_value->attr_val.attr_max_len > 0) {
memcpy(p_cur->p_value->attr_val.attr_val, value, length);
p_cur->p_value->attr_val.attr_len = length;
+ } else {
+ return GATT_INVALID_ATTR_LEN;
}
break;
}
} else {
- if (p_cur->p_value->attr_val.attr_max_len < length) {
+ if (p_cur->p_value != NULL && p_cur->p_value->attr_val.attr_max_len < length) {
GATT_TRACE_ERROR("gatts_set_attribute_vaule failt:Invalid value length");
- } else {
+ } else if (p_cur->p_value != NULL && p_cur->p_value->attr_val.attr_max_len > 0) {
memcpy(p_cur->p_value->attr_val.attr_val, value, length);
p_cur->p_value->attr_val.attr_len = length;
+ } else {
+ return GATT_INVALID_ATTR_LEN;
}
-
}
-
break;
-
}
p_cur = p_cur->p_next;
UINT16 *length, UINT8 **value)
{
tGATT_ATTR16 *p_cur;
- GATT_TRACE_DEBUG("***********%s*************\n", __func__);
+
GATT_TRACE_DEBUG("attr_handle = %x\n", attr_handle);
+
if (p_db == NULL) {
GATT_TRACE_ERROR("gatts_get_attribute_value Fail:p_db is NULL.\n");
return GATT_INVALID_PDU;
p_cur = (tGATT_ATTR16 *) p_db->p_attr_list;
while (p_cur != NULL) {
- LOG_ERROR("p_ur->handle = %x\n", p_cur->handle);
if (p_cur->handle == attr_handle) {
if (p_cur->uuid_type == GATT_ATTR_UUID_TYPE_16) {
case GATT_UUID_INCLUDE_SERVICE:
break;
default:
- if (p_cur->p_value->attr_val.attr_len != 0) {
+ if (p_cur->p_value && p_cur->p_value->attr_val.attr_len != 0) {
*length = p_cur->p_value->attr_val.attr_len;
*value = p_cur->p_value->attr_val.attr_val;
return GATT_SUCCESS;
}
-
p_cur = p_cur->p_next;
}