Windows 7 4.528 Themen, 43.513 Beiträge

Wo ist COMMAND.COM's '/E:'-Option in CMD.EXE?

Mdl / 2 Antworten / Flachansicht Nickles

Vor einigen Zeiten, als ich - wenn ich das jetzt richtig rekonstruiert habe - COMMAND.COM zum Aufruf eines Konsolenfensters genommen habe, habe ich plötzlich gemerkt, dass meine Environment-Variablen (-> SET-Befehl) abgeschnitten werden und bin dann auf die /E Option von command.com gestoßen, mit der man die Environment-Buffergröße definieren kann; z.B. /E:4096 definiert den Buffer als 4KB.

Irgendwann gab es kein command.com mehr, aber dafür cmd.exe und so habe ich es - irrtümlich - lange Zeit mit denselben Optionen genutzt. Nur jetzt habe ich gesehen, dass /E dort für das Ein- und Ausschalten der Kommandozeilen-Erweiterung verwendet wird (/E:ON oder /E:Off).

FRAGE: Kann man jetzt die Environment-Buffergröße mit CDM.EXE gar nicht mehr definieren, braucht man das vielleicht gar nicht mehr (weil CMD.EXE diese bei Bedarf vielleicht selbst erhöht) oder wie geht das jetzt mit CMD.EXE?

Gruß,

Mdl

bei Antwort benachrichtigen
Mdl TheVomit „Howdy, für den Fall das ich mich jetzt zum Deppen mache ...“
Optionen

Hallo TheVomit,

> für den Fall das ich mich jetzt zum Deppen mache sage ich mal vorweg SORRY

Wieso solltest Du?

>aber afair ist die definition des Environment-Buffer bei CMD.exe nicht mehr nötig da ein Buffer overrun ausgeschlossen ist. Hab gerade mal gegoogelt: Microsoft Bulletin MS00-0027 FAQ

Danke. Falls es noch jemand interessiert, hier ein Link: http://technet.microsoft.com/en-us/security/bulletin/fq00-027

Bin mir aber nicht so ganz sicher, ob es das Problem behebt, wenn man innerhalb der CMD-Eingabeaufforderung-Umgebung ein Batchfile ausführt, das viele Environment-Variablen hat. MS schreibt da nichts darüber, wie es einen theoretischen Buffer-Overrun handelt. Idealerweise natürlich, indem es einen neuen, größeren Speicher allokiert, die bisherigen Daten dort hineinkopiert und den alten wieder freigibt.

[PAUSE]

Ich glaube, das beste ist, ich probier es mal selber aus einen solchen zu erzeugen, also z.B. TEST.BAT:

set xa=aaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
set xb=bbbbbbbbbbbbbbbbbbbbbbbbbbbbb...
set xab=%xa%%xb%%a%%b%%a%%b%
set xab00=%xab%%xab%...
set xab01=%xab%%xab%...
...
set xab79=%xab%%xab%...
set >TEST.OUT
dir TEST.OUT

Was am Ende rauskam, war, dass die Datei TEST.OUT, die jetzt den gesamten Env.Buffer gespeichert hat bei mir ca. 500KB groß war und die letzte definierte Variable (xab79) auch noch definiert und nicht abgeschnitten war. 

Also denke ich mal, dass es nicht nur zu keinem Overrun kommt, sondern auch nichts verlorgen gegangen ist.

Ich habe zwar nie explizit einen Patch für dieses Problem auf meinem win7 ausgeführt, aber bei den vielen automatisch installierten kann dieser durchaus dabei gewesen sind.

Fazit also:

Die frühere bei COMMAND.COM notwendigte Environment-Angabe braucht man bei CMD.EXE nicht mehr.

Gruß,

Mdl

bei Antwort benachrichtigen