From 88c87172bafe0250e05ff07809d9c28bf3af624e Mon Sep 17 00:00:00 2001 From: EnderIce2 Date: Sat, 19 Oct 2024 01:31:42 +0300 Subject: [PATCH] vt: Fix incorrect buffer read size in VirtualTerminal Resolved an issue in VirtualTerminal::Read where the size of the report buffer was incorrectly set to sizeof(report), causing multiple unintended reads. --- tty/vt.cpp | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/tty/vt.cpp b/tty/vt.cpp index d1c2e85..ded1eed 100644 --- a/tty/vt.cpp +++ b/tty/vt.cpp @@ -54,7 +54,7 @@ namespace KernelConsole while (DriverManager->GlobalKeyboardInputReports.Count() == 0) TaskManager->Yield(); - DriverManager->GlobalKeyboardInputReports.Read(&report, sizeof(report)); + DriverManager->GlobalKeyboardInputReports.Read(&report, 1); int pkey = report.Key & ~KEY_PRESSED; if (pkey == KEY_LEFT_SHIFT || pkey == KEY_RIGHT_SHIFT) @@ -75,11 +75,9 @@ namespace KernelConsole char c = Driver::GetScanCode(report.Key, upperCase); char *buf = (char *)Buffer; buf[0] = c; - debug("KCON: %c", c); if (this->TerminalConfig.c_lflag & ECHO) { - debug("ECHO"); if (this->TerminalConfig.c_lflag & ICANON) this->Process(buf[0]); else @@ -95,12 +93,7 @@ namespace KernelConsole // return bufLength; // } } - else - { - debug("~ICANON"); - } - debug("ret 1"); return 1; }