From 817f516fce220f2dfc7b8795e3671bd2f6374da2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Kowalczyk?= Date: Fri, 4 Oct 2019 00:27:12 +0200 Subject: [PATCH] [Pal] Fix off-by-one in DkSetExceptionHandler --- Pal/src/db_exception.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Pal/src/db_exception.c b/Pal/src/db_exception.c index 6ea7cc6b..d45d6ffe 100644 --- a/Pal/src/db_exception.c +++ b/Pal/src/db_exception.c @@ -31,7 +31,7 @@ #include "pal_error.h" #include "pal_internal.h" -#define INIT_EVENT_HANDLER { .lock = LOCK_INIT } +#define INIT_EVENT_HANDLER { .lock = LOCK_INIT, .upcall = NULL } struct pal_event_handler { PAL_LOCK lock; @@ -39,6 +39,7 @@ struct pal_event_handler { }; struct pal_event_handler handlers[] = { + [0] = INIT_EVENT_HANDLER, [PAL_EVENT_ARITHMETIC_ERROR] = INIT_EVENT_HANDLER, [PAL_EVENT_MEMFAULT] = INIT_EVENT_HANDLER, [PAL_EVENT_ILLEGAL] = INIT_EVENT_HANDLER, @@ -62,7 +63,7 @@ PAL_BOL DkSetExceptionHandler(PAL_EVENT_HANDLER handler, PAL_NUM event) { ENTER_PAL_CALL(DkSetExceptionHandler); - if (!handler || event == 0 || event > sizeof(handlers) / sizeof(handlers[0])) { + if (!handler || event == 0 || event >= sizeof(handlers) / sizeof(handlers[0])) { _DkRaiseFailure(PAL_ERROR_INVAL); LEAVE_PAL_CALL_RETURN(PAL_FALSE); }