diff --git a/android/gatt.c b/android/gatt.c
index e1d7df2..b4a2554 100644
--- a/android/gatt.c
+++ b/android/gatt.c
uint8_t t[ATT_SIGNATURE_LEN];
uint32_t r_sign_cnt = get_le32(s);
- if (r_sign_cnt != sign_cnt) {
- error("gatt: sign_cnt does not match (%d!=%d)",
- sign_cnt, r_sign_cnt);
+ if (r_sign_cnt <= sign_cnt) {
+ error("gatt: Invalid sign counter (%d<=%d)",
+ r_sign_cnt, sign_cnt);
return;
}
/* Generate signature and verify it */
if (!bt_crypto_sign_att(crypto, csrk, cmd,
cmd_len - ATT_SIGNATURE_LEN,
- sign_cnt, t)) {
+ r_sign_cnt, t)) {
error("gatt: Error when generating att signature");
return;
}
return;
}
/* Signature OK, proceed with write */
- bt_update_sign_counter(&dev->bdaddr, REMOTE_CSRK, sign_cnt++);
+ bt_update_sign_counter(&dev->bdaddr, REMOTE_CSRK, r_sign_cnt);
gatt_db_write(gatt_db, handle, 0, value, vlen, cmd[0],
&dev->bdaddr);
}