From 0b1838a97083a347e16d39d20f9349f0ea410062 Mon Sep 17 00:00:00 2001 From: Heyi Guo Date: Wed, 22 Apr 2020 20:00:00 +0800 Subject: [PATCH] lib/extensions/ras: fix bug of binary search In ras_interrupt_handler(), binary search end was set to the size of the ras_interrupt_mappings array, which would cause out of bound access when the input intr_raw is larger than all the elements in ras_interrupt_mappings. Signed-off-by: Heyi Guo Change-Id: Id2cff73177134b09d4d8beb596c3429b98ec5066 --- lib/extensions/ras/ras_common.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/extensions/ras/ras_common.c b/lib/extensions/ras/ras_common.c index 36f9a95b6..622879efa 100644 --- a/lib/extensions/ras/ras_common.c +++ b/lib/extensions/ras/ras_common.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2019, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2018-2021, ARM Limited and Contributors. All rights reserved. * Copyright (c) 2020, NVIDIA Corporation. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -139,7 +139,7 @@ static int ras_interrupt_handler(uint32_t intr_raw, uint32_t flags, assert(ras_interrupt_mappings.num_intrs > 0UL); start = 0; - end = (int) ras_interrupt_mappings.num_intrs; + end = (int)ras_interrupt_mappings.num_intrs - 1; while (start <= end) { mid = ((end + start) / 2); if (intr_raw == ras_inrs[mid].intr_number) {