40 lines
1.5 KiB
Diff
40 lines
1.5 KiB
Diff
|
|
From 8ac5c38a54d407b363d6633eb01806b0e9aaa15e Mon Sep 17 00:00:00 2001
|
||
|
|
From: yinxiuxiu <yinxiuxiu_yewu@cmss.chinamobile.com>
|
||
|
|
Date: Fri, 22 Nov 2024 14:45:09 +0800
|
||
|
|
Subject: [PATCH] Avoid taking address of out-of-bounds array index
|
||
|
|
|
||
|
|
Signed-off-by: yinxiuxiu <yinxiuxiu_yewu@cmss.chinamobile.com>
|
||
|
|
---
|
||
|
|
hw/intc/openpic.c | 15 ++++++++-------
|
||
|
|
1 file changed, 8 insertions(+), 7 deletions(-)
|
||
|
|
|
||
|
|
diff --git a/hw/intc/openpic.c b/hw/intc/openpic.c
|
||
|
|
index 0f99b77a17..d74ec11af4 100644
|
||
|
|
--- a/hw/intc/openpic.c
|
||
|
|
+++ b/hw/intc/openpic.c
|
||
|
|
@@ -1031,13 +1031,14 @@ static void openpic_cpu_write_internal(void *opaque, hwaddr addr,
|
||
|
|
s_IRQ = IRQ_get_next(opp, &dst->servicing);
|
||
|
|
/* Check queued interrupts. */
|
||
|
|
n_IRQ = IRQ_get_next(opp, &dst->raised);
|
||
|
|
- src = &opp->src[n_IRQ];
|
||
|
|
- if (n_IRQ != -1 &&
|
||
|
|
- (s_IRQ == -1 ||
|
||
|
|
- IVPR_PRIORITY(src->ivpr) > dst->servicing.priority)) {
|
||
|
|
- DPRINTF("Raise OpenPIC INT output cpu %d irq %d",
|
||
|
|
- idx, n_IRQ);
|
||
|
|
- qemu_irq_raise(opp->dst[idx].irqs[OPENPIC_OUTPUT_INT]);
|
||
|
|
+ if (n_IRQ != -1) {
|
||
|
|
+ src = &opp->src[n_IRQ];
|
||
|
|
+ if (s_IRQ == -1 ||
|
||
|
|
+ IVPR_PRIORITY(src->ivpr) > dst->servicing.priority) {
|
||
|
|
+ DPRINTF("Raise OpenPIC INT output cpu %d irq %d",
|
||
|
|
+ idx, n_IRQ);
|
||
|
|
+ qemu_irq_raise(opp->dst[idx].irqs[OPENPIC_OUTPUT_INT]);
|
||
|
|
+ }
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
default:
|
||
|
|
--
|
||
|
|
2.41.0.windows.1
|
||
|
|
|