From b60ee76f2238eca1024d61fd65ee38f0e9847fd7 Mon Sep 17 00:00:00 2001 From: Aleksandar Andrejevic Date: Sat, 10 Aug 2013 21:41:20 +0000 Subject: [PATCH] [NTVDM] Use DOS_CMDLINE_LENGTH instead of MAX_PATH. Fix bug in DosInitializePsp which allowed writing past the end of the Program Segment Prefix (PSP). svn path=/branches/ntvdm/; revision=59693 --- subsystems/ntvdm/dos.c | 4 ++-- subsystems/ntvdm/ntvdm.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/subsystems/ntvdm/dos.c b/subsystems/ntvdm/dos.c index 86d5e3d0c2a..8ff155769aa 100644 --- a/subsystems/ntvdm/dos.c +++ b/subsystems/ntvdm/dos.c @@ -864,7 +864,7 @@ VOID DosInitializePsp(WORD PspSegment, LPCSTR CommandLine, WORD ProgramSize, WOR PspBlock->FarCall[2] = 0xCB; // retf /* Set the command line */ - PspBlock->CommandLineSize = (BYTE)min(strlen(CommandLine), DOS_CMDLINE_LENGTH); + PspBlock->CommandLineSize = (BYTE)min(strlen(CommandLine), DOS_CMDLINE_LENGTH - 1); RtlCopyMemory(PspBlock->CommandLine, CommandLine, PspBlock->CommandLineSize); PspBlock->CommandLine[PspBlock->CommandLineSize] = '\r'; } @@ -875,7 +875,7 @@ BOOLEAN DosCreateProcess(LPCSTR CommandLine, WORD EnvBlock) HANDLE FileHandle = INVALID_HANDLE_VALUE, FileMapping = NULL; LPBYTE Address = NULL; LPSTR ProgramFilePath, Parameters[256]; - CHAR CommandLineCopy[MAX_PATH]; + CHAR CommandLineCopy[DOS_CMDLINE_LENGTH]; INT ParamCount = 0; WORD Segment = 0; WORD MaxAllocSize; diff --git a/subsystems/ntvdm/ntvdm.c b/subsystems/ntvdm/ntvdm.c index bbb44d4bd4f..72123098c70 100644 --- a/subsystems/ntvdm/ntvdm.c +++ b/subsystems/ntvdm/ntvdm.c @@ -77,7 +77,7 @@ BOOL WINAPI ConsoleCtrlHandler(DWORD ControlType) INT wmain(INT argc, WCHAR *argv[]) { INT i; - CHAR CommandLine[MAX_PATH]; + CHAR CommandLine[DOS_CMDLINE_LENGTH]; DWORD CurrentTickCount; DWORD LastTickCount = GetTickCount(); DWORD Cycles = 0;