system in verbindung mit gets
-
Hallo ich möchte über System eine Datei im vi öffnen mit der
Verbindung einer Zeichenkette. Er gibt dann den Fehler
sh: syntax error at line 1: 'vi' unexpected aus Was kann ich da machenchar text[80]; ..... ..... switch(wahl) { case 1: satzfunktion(); break; case 8: schnelle_matrix(); break; case 45: system("ls"); break; case 44: printf("Bitte Programm Namen eingeben:\n"); sleep(2); system("ls"); gets(text); system("vi(wahl)"); break; }
-
Bei
system("vi (wahl)");
habe ich schon den Fehler koregiert also jetzt
system("vi (´text)");
-
das ist definitiv ein Unix Problem, da dein C Programm nix dafür kann, wenn du der shell eine falsche Syntax gibst!
-
- gets ist böse
- Usereingaben unüberprüft an system zu übergeben ist böse
- schau dir sprintf bzw. snprintf an
-
Hi,
mit welchen Rechten wird das Programm ausgefuehrt? Darf ich dann dem vi mal
/etc/passwd uebergeben?Mal im Ernst: Ueberpruef genau, was der User eingibt, wenn du vorhast das Programm
mit viel privilegien laufen zu lassen. Ich will nicht unterstellen,
dass du das auch machst, aber wie Bashar schon gesagt hat, ist es
sehr schlecht, die Userangaben ungeprueft an system () zu uebergeben.mfg
v R