From f7fb0bf77f3434bfb67411cad65e704fdef27f76 Mon Sep 17 00:00:00 2001 From: Max Shvetsov Date: Tue, 25 Aug 2020 11:50:18 +0100 Subject: [PATCH] Fix: fixing coverity issue for SPM Core. spmd_get_context_by_mpidr was using potentially negative value as an array index. plat_core_pos_by_mpidr could return -1 on failure which is utilized by some platforms. Signed-off-by: Max Shvetsov Change-Id: I7f8827e77f18da389c9cafdc1fc841aba9f03120 --- services/std_svc/spmd/spmd_main.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/services/std_svc/spmd/spmd_main.c b/services/std_svc/spmd/spmd_main.c index 6f0d9b1dc..10da08ebe 100644 --- a/services/std_svc/spmd/spmd_main.c +++ b/services/std_svc/spmd/spmd_main.c @@ -46,7 +46,14 @@ static entry_point_info_t *spmc_ep_info; ******************************************************************************/ spmd_spm_core_context_t *spmd_get_context_by_mpidr(uint64_t mpidr) { - return &spm_core_context[plat_core_pos_by_mpidr(mpidr)]; + int core_idx = plat_core_pos_by_mpidr(mpidr); + + if (core_idx < 0) { + ERROR("Invalid mpidr: %llx, returned ID: %d\n", mpidr, core_idx); + panic(); + } + + return &spm_core_context[core_idx]; } /*******************************************************************************