[ros-diffs] [jmorlan] 40248: - Fix a buffer overflow in cmd - Make "CMD /C" clean up before exiting to get rid of spurious "memory leak" debug messages

jmorlan at svn.reactos.org jmorlan at svn.reactos.org
Thu Mar 26 07:31:47 CET 2009


Author: jmorlan
Date: Thu Mar 26 09:31:46 2009
New Revision: 40248

URL: http://svn.reactos.org/svn/reactos?rev=40248&view=rev
Log:
- Fix a buffer overflow in cmd
- Make "CMD /C" clean up before exiting to get rid of spurious "memory leak" debug messages

Modified:
    trunk/reactos/base/shell/cmd/cmd.c

Modified: trunk/reactos/base/shell/cmd/cmd.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/cmd/cmd.c?rev=40248&r1=40247&r2=40248&view=diff
==============================================================================
--- trunk/reactos/base/shell/cmd/cmd.c [iso-8859-1] (original)
+++ trunk/reactos/base/shell/cmd/cmd.c [iso-8859-1] Thu Mar 26 09:31:46 2009
@@ -335,7 +335,7 @@
 	   need rewrite some code to use cmd_realloc when it need instead
 	   of add 512bytes extra */
 
-	first = cmd_alloc ( (_tcslen(First) + 512) * sizeof(TCHAR));
+	first = cmd_alloc ( (_tcslen(Full) + 512) * sizeof(TCHAR));
 	if (first == NULL)
 	{
 		error_out_of_memory();
@@ -343,7 +343,7 @@
 		return FALSE;
 	}
 
-	rest = cmd_alloc ( (_tcslen(Rest) + 512) * sizeof(TCHAR));
+	rest = cmd_alloc ( (_tcslen(Full) + 512) * sizeof(TCHAR));
 	if (rest == NULL)
 	{
 		cmd_free (first);
@@ -1540,7 +1540,7 @@
 {
 	PARSED_COMMAND *Cmd;
 
-	do
+	while (!bCanExit || !bExit)
 	{
 		Cmd = ParseCommand(NULL);
 		if (!Cmd)
@@ -1549,7 +1549,6 @@
 		ExecuteCommand(Cmd);
 		FreeCommand(Cmd);
 	}
-	while (!bCanExit || !bExit);
 
 	return nErrorLevel;
 }
@@ -1891,7 +1890,7 @@
 		GetCmdLineCommand(commandline, &ptr[2], AlwaysStrip);
 		ParseCommandLine(commandline);
 		if (option != _T('K'))
-			cmd_exit(nErrorLevel);
+			bExit = TRUE;
 	}
 }
 



More information about the Ros-diffs mailing list