diff --git a/src/shared/att.c b/src/shared/att.c
index 8bf0042..67f93fc 100644
--- a/src/shared/att.c
+++ b/src/shared/att.c
const void *pdu, uint16_t length)
{
uint16_t pdu_len = 1;
- struct sign_info *sign;
+ struct sign_info *sign = att->local_sign;
uint32_t sign_cnt;
- if (op->opcode & ATT_OP_SIGNED_MASK)
+ if (sign && (op->opcode & ATT_OP_SIGNED_MASK))
pdu_len += BT_ATT_SIGNATURE_LEN;
if (length && pdu)
if (pdu_len > 1)
memcpy(op->pdu + 1, pdu, length);
- if (!(op->opcode & ATT_OP_SIGNED_MASK))
+ if (!sign || !(op->opcode & ATT_OP_SIGNED_MASK))
return true;
- sign = att->local_sign;
- if (!sign)
- goto fail;
-
if (!sign->counter(&sign_cnt, sign->user_data))
goto fail;