DoCommand() Remove one more hardcode buffer size. Remove limit command to MAX_PATH. No check for limit command line- Modified: trunk/reactos/subsys/system/cmd/cmd.c _____
Modified: trunk/reactos/subsys/system/cmd/cmd.c --- trunk/reactos/subsys/system/cmd/cmd.c 2005-09-12 17:10:00 UTC (rev 17820) +++ trunk/reactos/subsys/system/cmd/cmd.c 2005-09-12 19:50:16 UTC (rev 17821) @@ -532,17 +532,26 @@
static VOID DoCommand (LPTSTR line) { - TCHAR com[CMDLINE_LENGTH]; /* the first word in the command */ - LPTSTR cp = com; + TCHAR *com = NULL; /* the first word in the command */ + TCHAR *cp = NULL; LPTSTR cstart; LPTSTR rest; /* pointer to the rest of the command line */ INT cl; LPCOMMAND cmdptr;
+ #ifdef _DEBUG DebugPrintf (_T("DoCommand: ('%s')\n"), line); #endif /* DEBUG */
+ com = malloc( (_tcslen(line) +512)*sizeof(TCHAR) ); + if (com == NULL) + { + error_out_of_memory(); + return; + } + + cp = com; /* Skip over initial white space */ while (_istspace (*line)) line++; @@ -574,12 +583,15 @@ /* Terminate first word */ *cp = _T('\0');
- /* commands are limited to MAX_PATH */ + /* Do not limit commands to MAX_PATH */ + /* if(_tcslen(com) > MAX_PATH) { error_bad_command(); + free(com); return; } + */
/* Skip over whitespace to rest of line */ while (_istspace (*rest)) @@ -627,6 +639,7 @@ } } } + free(com); }