Bluetooth: controller: proper handling of invalid pdu in CIS create
Do not assert on invalid PDU in CIS create procedure. Instead terminate
with reason BT_HCI_ERR_LMP_PDU_NOT_ALLOWED
Signed-off-by: Erik Brockhoff <erbr@oticon.com>
diff --git a/subsys/bluetooth/controller/ll_sw/ull_llcp_cc.c b/subsys/bluetooth/controller/ll_sw/ull_llcp_cc.c
index c580f75..9cf6008 100644
--- a/subsys/bluetooth/controller/ll_sw/ull_llcp_cc.c
+++ b/subsys/bluetooth/controller/ll_sw/ull_llcp_cc.c
@@ -588,8 +588,12 @@
rp_cc_execute_fsm(conn, ctx, RP_CC_EVT_REJECT, pdu);
break;
default:
- /* Unknown opcode */
- LL_ASSERT(0);
+ /* Invalid behaviour */
+ /* Invalid PDU received so terminate connection */
+ conn->llcp_terminate.reason_final = BT_HCI_ERR_LMP_PDU_NOT_ALLOWED;
+ llcp_rr_complete(conn);
+ ctx->state = RP_CC_STATE_IDLE;
+ break;
}
}
@@ -698,8 +702,12 @@
lp_cc_execute_fsm(conn, ctx, LP_CC_EVT_REJECT, pdu);
break;
default:
- /* Unknown opcode */
- LL_ASSERT(0);
+ /* Invalid behaviour */
+ /* Invalid PDU received so terminate connection */
+ conn->llcp_terminate.reason_final = BT_HCI_ERR_LMP_PDU_NOT_ALLOWED;
+ llcp_lr_complete(conn);
+ ctx->state = LP_CC_STATE_IDLE;
+ break;
}
}