Bluetooth: ATT: Merge all permission check in one place

This merges callback checks with permissions checks so there are done in
one place.

Change-Id: Ic51b2be9cda67eac9e5dc1ebcbf6186ad5007bf4
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This commit is contained in:
Luiz Augusto von Dentz 2016-06-21 13:36:17 +03:00
commit c116fc42e0

View file

@ -542,12 +542,12 @@ static uint8_t check_perm(struct bt_conn *conn, const struct bt_gatt_attr *attr,
uint8_t mask)
{
if ((mask & BT_GATT_PERM_READ) &&
!(attr->perm & BT_GATT_PERM_READ_MASK)) {
(!(attr->perm & BT_GATT_PERM_READ_MASK) || !attr->read)) {
return BT_ATT_ERR_READ_NOT_PERMITTED;
}
if ((mask & BT_GATT_PERM_WRITE) &&
!(attr->perm & BT_GATT_PERM_WRITE_MASK)) {
(!(attr->perm & BT_GATT_PERM_WRITE_MASK) || !attr->write)) {
return BT_ATT_ERR_WRITE_NOT_PERMITTED;
}
@ -761,11 +761,6 @@ static uint8_t read_cb(const struct bt_gatt_attr *attr, void *user_data)
*/
data->err = 0x00;
if (!attr->read) {
data->err = BT_ATT_ERR_READ_NOT_PERMITTED;
return BT_GATT_ITER_STOP;
}
/* Check attribute permissions */
data->err = check_perm(conn, attr, BT_GATT_PERM_READ_MASK);
if (data->err) {
@ -1072,12 +1067,6 @@ static uint8_t write_cb(const struct bt_gatt_attr *attr, void *user_data)
BT_DBG("handle 0x%04x offset %u", attr->handle, data->offset);
/* Check for write support */
if (!attr->write) {
data->err = BT_ATT_ERR_WRITE_NOT_PERMITTED;
return BT_GATT_ITER_STOP;
}
/* Check attribute permissions */
data->err = check_perm(data->conn, attr, BT_GATT_PERM_WRITE_MASK);
if (data->err) {
@ -1177,12 +1166,6 @@ static uint8_t prep_write_cb(const struct bt_gatt_attr *attr, void *user_data)
BT_DBG("handle 0x%04x offset %u", attr->handle, data->offset);
/* Check for write support */
if (!attr->write) {
data->err = BT_ATT_ERR_WRITE_NOT_PERMITTED;
return BT_GATT_ITER_STOP;
}
/* Check attribute permissions */
data->err = check_perm(data->conn, attr, BT_GATT_PERM_WRITE_MASK);
if (data->err) {