X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=reactos%2Fntoskrnl%2Fex%2Fharderr.c;h=266fefc55e8c714106a353fd987976f5aed3e8e3;hp=e3f158504121d717fe6874fd65705b3250b419ee;hb=8a1b2b51be6b2f2b766ee4d3ee1cfbb71086a745;hpb=7ae4b30b8ed5002dc53b0a8c774cbe54c7b7d093 diff --git a/reactos/ntoskrnl/ex/harderr.c b/reactos/ntoskrnl/ex/harderr.c index e3f15850412..266fefc55e8 100644 --- a/reactos/ntoskrnl/ex/harderr.c +++ b/reactos/ntoskrnl/ex/harderr.c @@ -58,12 +58,26 @@ ExpSystemErrorHandler(IN NTSTATUS ErrorStatus, IN PULONG_PTR Parameters, IN BOOLEAN Shutdown) { - ULONG_PTR Dummy[4] = {0, 0, 0, 0}; + ULONG_PTR BugCheckParameters[MAXIMUM_HARDERROR_PARAMETERS] = {0, 0, 0, 0}; + ULONG i; + + /* Sanity check */ + ASSERT(NumberOfParameters <= MAXIMUM_HARDERROR_PARAMETERS); + + /* + * KeBugCheck expects MAXIMUM_HARDERROR_PARAMETERS parameters, + * but we might get called with less, so use a local buffer here. + */ + for (i = 0; i < NumberOfParameters; i++) + { + /* Copy them over */ + BugCheckParameters[i] = Parameters[i]; + } /* FIXME: STUB */ KeBugCheckEx(FATAL_UNHANDLED_HARD_ERROR, ErrorStatus, - (ULONG_PTR)Dummy, + (ULONG_PTR)BugCheckParameters, 0, 0); return STATUS_SUCCESS; @@ -507,7 +521,7 @@ ExRaiseHardError(IN NTSTATUS ErrorStatus, * Optional string parameter (can be only one per error code) * * @param Parameters - * Array of ULONG parameters for use in error message string + * Array of ULONG_PTR parameters for use in error message string * * @param ValidResponseOptions * See HARDERROR_RESPONSE_OPTION for possible values description