From d0e421225a4f557b6a4069fda168b6f59fe0926b Mon Sep 17 00:00:00 2001 From: Jamie McCrae Date: Fri, 6 Jan 2023 09:42:56 +0000 Subject: [PATCH] mgmt: mcumgr: callbacks: Fix not checking event ID properly Fixes an issue whereby event ID was not checked properly, meaning that OR'd events would not work as one would expect. Signed-off-by: Jamie McCrae --- subsys/mgmt/mcumgr/mgmt/src/mgmt.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/subsys/mgmt/mcumgr/mgmt/src/mgmt.c b/subsys/mgmt/mcumgr/mgmt/src/mgmt.c index d20e9f3060d..97113a06adb 100644 --- a/subsys/mgmt/mcumgr/mgmt/src/mgmt.c +++ b/subsys/mgmt/mcumgr/mgmt/src/mgmt.c @@ -106,9 +106,11 @@ int32_t mgmt_callback_notify(uint32_t event, void *data, size_t data_size) struct mgmt_callback *loop_group = CONTAINER_OF(snp, struct mgmt_callback, node); - if (loop_group->event_id == event || loop_group->event_id == MGMT_EVT_OP_ALL || + if (loop_group->event_id == MGMT_EVT_OP_ALL || (MGMT_EVT_GET_GROUP(loop_group->event_id) == group && - MGMT_EVT_GET_ID(loop_group->event_id) == MGMT_EVT_OP_ID_ALL)) { + (MGMT_EVT_GET_ID(event) & MGMT_EVT_GET_ID(loop_group->event_id)) == + MGMT_EVT_GET_ID(event))) { + rc = loop_group->callback(event, return_rc, &abort_more, data, data_size); if (rc != MGMT_ERR_EOK && failed == false) {