diff --git a/android/gatt.c b/android/gatt.c
index 721785a..18e1e03 100644
--- a/android/gatt.c
+++ b/android/gatt.c
struct gatt_device *dev)
{
uint8_t value[cmd_len];
+ uint32_t permissions;
uint16_t handle;
uint16_t len;
size_t vlen;
if (!len)
return;
+ permissions = gatt_db_get_attribute_permissions(gatt_db, handle);
+ if (check_device_permissions(dev, cmd[0], permissions))
+ return;
+
gatt_db_write(gatt_db, handle, 0, value, vlen, cmd[0], &dev->bdaddr);
}
{
uint8_t value[ATT_DEFAULT_LE_MTU];
uint8_t s[ATT_SIGNATURE_LEN];
+ uint32_t permissions;
uint16_t handle;
uint16_t len;
size_t vlen;
}
len = dec_signed_write_cmd(cmd, cmd_len, &handle, value, &vlen, s);
+
+ permissions = gatt_db_get_attribute_permissions(gatt_db, handle);
+ if (check_device_permissions(dev, cmd[0], permissions))
+ return;
+
if (len) {
uint8_t t[ATT_SIGNATURE_LEN];
{
uint8_t value[cmd_len];
struct pending_request *data;
+ uint32_t permissions;
uint16_t handle;
uint16_t len;
+ uint8_t error;
size_t vlen;
len = dec_write_req(cmd, cmd_len, &handle, value, &vlen);
if (!len)
return ATT_ECODE_INVALID_PDU;
+ permissions = gatt_db_get_attribute_permissions(gatt_db, handle);
+
+ error = check_device_permissions(dev, cmd[0], permissions);
+ if (error)
+ return error;
+
data = new0(struct pending_request, 1);
if (!data)
return ATT_ECODE_INSUFF_RESOURCES;
{
uint8_t value[cmd_len];
struct pending_request *data;
+ uint32_t permissions;
uint16_t handle;
uint16_t offset;
+ uint8_t error;
uint16_t len;
size_t vlen;
if (!len)
return ATT_ECODE_INVALID_PDU;
+ permissions = gatt_db_get_attribute_permissions(gatt_db, handle);
+
+ error = check_device_permissions(dev, cmd[0], permissions);
+ if (error)
+ return error;
+
data = new0(struct pending_request, 1);
if (!data)
return ATT_ECODE_INSUFF_RESOURCES;