Browse Source

Merged revisions 7012 via svnmerge from
http://svn.freepascal.org/svn/fpc/trunk

........
r7012 | pierre | 2007-03-27 21:56:58 +0200 (Tue, 27 Mar 2007) | 1 line

* fix memory corruption in Setup_arguments
........

git-svn-id: branches/fixes_2_2@7016 -

pierre 18 years ago
parent
commit
dbbe74d577
1 changed files with 4 additions and 3 deletions
  1. 4 3
      rtl/go32v2/system.pp

+ 4 - 3
rtl/go32v2/system.pp

@@ -171,7 +171,7 @@ var
   useproxy : boolean;
   useproxy : boolean;
   hp       : ppchar;
   hp       : ppchar;
   doscmd   : string[129];  { Dos commandline copied from PSP, max is 128 chars +1 for terminating zero }
   doscmd   : string[129];  { Dos commandline copied from PSP, max is 128 chars +1 for terminating zero }
-  arglen,
+  arglen,cmdlen,
   count   : longint;
   count   : longint;
   argstart,
   argstart,
   pc,arg  : pchar;
   pc,arg  : pchar;
@@ -231,12 +231,13 @@ begin
   move(dos_argv0^,argv[count]^,argv0len+1);
   move(dos_argv0^,argv[count]^,argv0len+1);
   inc(count);
   inc(count);
   { setup cmdline variable }
   { setup cmdline variable }
-  cmdline:=Getmem(argv0len+length(doscmd)+2);
+  cmdlen:=argv0len+length(doscmd)+2;
+  cmdline:=Getmem(cmdlen);
   move(dos_argv0^,cmdline^,argv0len);
   move(dos_argv0^,cmdline^,argv0len);
   cmdline[argv0len]:=' ';
   cmdline[argv0len]:=' ';
   inc(argv0len);
   inc(argv0len);
   move(doscmd[1],cmdline[argv0len],length(doscmd));
   move(doscmd[1],cmdline[argv0len],length(doscmd));
-  cmdline[argv0len+length(doscmd)+1]:=#0;
+  cmdline[cmdlen-1]:=#0;
   { parse dos commandline }
   { parse dos commandline }
   pc:=@doscmd[1];
   pc:=@doscmd[1];
   while pc^<>#0 do
   while pc^<>#0 do