Remove more hardcode buffer value to dymatic buffer.
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-04 09:29:44 UTC
(rev 17627)
+++ trunk/reactos/subsys/system/cmd/cmd.c 2005-09-04 09:54:59 UTC
(rev 17628)
@@ -296,9 +296,9 @@
Execute (LPTSTR Full, LPTSTR First, LPTSTR Rest)
{
TCHAR szFullName[MAX_PATH];
- TCHAR first[CMDLINE_LENGTH];
- TCHAR rest[CMDLINE_LENGTH];
- TCHAR full[CMDLINE_LENGTH];
+ TCHAR *first = NULL;
+ TCHAR *rest = NULL;
+ TCHAR *full = NULL;
#ifndef __REACTOS__
TCHAR szWindowTitle[MAX_PATH];
#endif
@@ -308,10 +308,39 @@
DebugPrintf (_T("Execute: \'%s\' \'%s\'\n"), first, rest);
#endif
+ /* we need biger buffer that First, Rest, Full are already
+ need rewrite some code to use realloc when it need instead
+ of add 512bytes extra */
+
+ first = malloc ( _tcslen(First) + 512 * sizeof(TCHAR));
+ if (first == NULL)
+ {
+ error_out_of_memory();
+ return ;
+ }
+
+ rest = malloc ( _tcslen(Rest) + 512 * sizeof(TCHAR));
+ if (rest == NULL)
+ {
+ free (full);
+ error_out_of_memory();
+ return ;
+ }
+
+ full = malloc ( _tcslen(Full) + 512 * sizeof(TCHAR));
+ if (full == NULL)
+ {
+ free (full);
+ free (rest);
+ error_out_of_memory();
+ return ;
+ }
+
+
/* Though it was already parsed once, we have a different set of
rules
for parsing before we pass to CreateProccess */
if(!_tcschr(Full,_T('\"')))
- {
+ {
_tcscpy(first,First);
_tcscpy(rest,Rest);
_tcscpy(full,Full);
@@ -468,6 +497,10 @@
#ifndef __REACTOS__
SetConsoleTitle (szWindowTitle);
#endif
+
+ free(first);
+ free(rest);
+ free(full);
}
Show replies by date