From c9a4764c10c5354898d8646dc6fe7c69cfe7f68d Mon Sep 17 00:00:00 2001 From: Jamie McCrae Date: Thu, 22 Jun 2023 09:03:24 +0100 Subject: [PATCH] mgmt: mcumgt: smp: Fix not checking returned status Fixes not checking if a zcbor operation was successful. Signed-off-by: Jamie McCrae --- subsys/mgmt/mcumgr/smp/src/smp.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/subsys/mgmt/mcumgr/smp/src/smp.c b/subsys/mgmt/mcumgr/smp/src/smp.c index 56c9cc17b3b05f..6107ef9ca1e1bc 100644 --- a/subsys/mgmt/mcumgr/smp/src/smp.c +++ b/subsys/mgmt/mcumgr/smp/src/smp.c @@ -226,12 +226,18 @@ static int smp_handle_single_payload(struct smp_streamer *cbuf, const struct smp } if (handler_fn) { + bool ok; + *handler_found = true; - zcbor_map_start_encode(cbuf->writer->zs, - CONFIG_MCUMGR_SMP_CBOR_MAX_MAIN_MAP_ENTRIES); + ok = zcbor_map_start_encode(cbuf->writer->zs, + CONFIG_MCUMGR_SMP_CBOR_MAX_MAIN_MAP_ENTRIES); MGMT_CTXT_SET_RC_RSN(cbuf, NULL); + if (!ok) { + return MGMT_ERR_EMSGSIZE; + } + #if defined(CONFIG_MCUMGR_SMP_COMMAND_STATUS_HOOKS) cmd_recv.group = req_hdr->nh_group; cmd_recv.id = req_hdr->nh_id; @@ -248,8 +254,8 @@ static int smp_handle_single_payload(struct smp_streamer *cbuf, const struct smp if (status == MGMT_CB_ERROR_RC) { rc = ret_rc; } else { - bool ok = smp_add_cmd_ret(cbuf->writer->zs, ret_group, - (uint16_t)ret_rc); + ok = smp_add_cmd_ret(cbuf->writer->zs, ret_group, + (uint16_t)ret_rc); rc = (ok ? MGMT_ERR_EOK : MGMT_ERR_EMSGSIZE); }