Просмотр исходного кода

Prevent memory corruption by respecting DOS command line length limit (tests/test/targ1b doesn't crash the machine anymore)

git-svn-id: trunk@10958 -
giulio 17 лет назад
Родитель
Сommit
5da751376b
1 измененных файлов с 5 добавлено и 0 удалено
  1. 5 0
      rtl/go32v2/dos.pp

+ 5 - 0
rtl/go32v2/dos.pp

@@ -162,6 +162,9 @@ end;
                                --- Exec ---
 ******************************************************************************}
 
+const
+  DOS_MAX_COMMAND_LINE_LENGTH = 126;
+
 procedure exec(const path : pathstr;const comline : comstr);
 type
   realptr = packed record
@@ -214,6 +217,8 @@ var
 begin
 { create command line }
   c:=comline;
+  if length(c)>DOS_MAX_COMMAND_LINE_LENGTH then
+    c[0]:=chr(DOS_MAX_COMMAND_LINE_LENGTH);
 { create path }
   p:=path;
 { allow slash as backslash }