https://git.reactos.org/?p=reactos.git;a=commitdiff;h=a4b2c80853b36079b93d528bdf7189f001c8c83a

commit a4b2c80853b36079b93d528bdf7189f001c8c83a
Author:     Thomas Faber <thomas.fa...@reactos.org>
AuthorDate: Mon Jan 3 10:15:57 2022 -0500
Commit:     Thomas Faber <thomas.fa...@reactos.org>
CommitDate: Mon Jan 3 13:25:09 2022 -0500

    [NTOS:KE] Fix buffer overflow when displaying x64 bug checks
---
 ntoskrnl/ke/bug.c | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/ntoskrnl/ke/bug.c b/ntoskrnl/ke/bug.c
index 8930e5fc88d..78bea627ad8 100644
--- a/ntoskrnl/ke/bug.c
+++ b/ntoskrnl/ke/bug.c
@@ -611,7 +611,7 @@ KiDisplayBlueScreen(IN ULONG MessageId,
                     IN PCHAR HardErrMessage OPTIONAL,
                     IN PCHAR Message)
 {
-    CHAR AnsiName[75];
+    CHAR AnsiName[107];
 
     /* Check if bootvid is installed */
     if (InbvIsBootDriverInstalled())
@@ -676,13 +676,14 @@ KiDisplayBlueScreen(IN ULONG MessageId,
     KeGetBugMessageText(BUGCHECK_TECH_INFO, NULL);
 
     /* Show the technical Data */
-    sprintf(AnsiName,
-            "\r\n\r\n*** STOP: 0x%08lX (0x%p,0x%p,0x%p,0x%p)\r\n\r\n",
-            (ULONG)KiBugCheckData[0],
-            (PVOID)KiBugCheckData[1],
-            (PVOID)KiBugCheckData[2],
-            (PVOID)KiBugCheckData[3],
-            (PVOID)KiBugCheckData[4]);
+    RtlStringCbPrintfA(AnsiName,
+                       sizeof(AnsiName),
+                       "\r\n\r\n*** STOP: 0x%08lX 
(0x%p,0x%p,0x%p,0x%p)\r\n\r\n",
+                       (ULONG)KiBugCheckData[0],
+                       (PVOID)KiBugCheckData[1],
+                       (PVOID)KiBugCheckData[2],
+                       (PVOID)KiBugCheckData[3],
+                       (PVOID)KiBugCheckData[4]);
     InbvDisplayString(AnsiName);
 
     /* Check if we have a driver*/

Reply via email to