From 2ce5d43a33670abfd5a14bdad4f1c9baecd46810 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Tue, 27 Feb 2024 19:58:11 +0200 Subject: [PATCH] [NTOS/x64] Gracefully handle invalid Vector in KeConnectInterrupt Fail instead of asserting. This is needed because a kmtest triggers it. --- ntoskrnl/ke/amd64/interrupt.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/ntoskrnl/ke/amd64/interrupt.c b/ntoskrnl/ke/amd64/interrupt.c index bf74eb2722c..d12902b4fb9 100644 --- a/ntoskrnl/ke/amd64/interrupt.c +++ b/ntoskrnl/ke/amd64/interrupt.c @@ -84,8 +84,14 @@ KeConnectInterrupt(IN PKINTERRUPT Interrupt) PKINTERRUPT ConnectedInterrupt; KIRQL OldIrql; - ASSERT(Interrupt->Vector >= PRIMARY_VECTOR_BASE); - ASSERT(Interrupt->Vector <= MAXIMUM_IDTVECTOR); + /* Validate the vector */ + if ((Interrupt->Vector < PRIMARY_VECTOR_BASE) || + (Interrupt->Vector > MAXIMUM_IDTVECTOR)) + { + DPRINT1("Invalid interrupt vector: %lu\n", Interrupt->Vector); + return FALSE; + } + ASSERT(Interrupt->Number < KeNumberProcessors); ASSERT(Interrupt->Irql <= HIGH_LEVEL); ASSERT(Interrupt->SynchronizeIrql >= Interrupt->Irql);