Andreas Bierhals: Übergabe der Umgebungsvariablen in C Funktioniert nicht

Beitrag lesen

Moin Sven,

andere Variable einfügen, da ich immer eine Fehlermeldung wegen des Speichers erhalte. Kann mir jemand da helfen?

»»  string = getenv("QUERY_STRING"); // Mit dieser Übergabe habe ich Speicherprobleme
»»  content[0]='\0';

»»  strcpy(content,string); //Konvertierung von Zeiger Char auf Char

Dies hat bei mir dann einen Speicherfehler verursacht, wenn die Umgebungsvariable QUERY_STRING nicht gesetzt war. Grund: get_env("KEY") liefert einen Nullpointer zurück, wenn "KEY" als Umgebungsvariable nicht bekannt ist. Darauf folgend versucht das Programm dann, den char-"Inhalt" ab Adresse 0 in content zu kopieren, was das Betriebssystem wohl nicht unbedingt mag.

int translate()
{

»»  z1 = 0;
»»  z3 = 0;
»»  var[0] = '\0';
»»  while ( content[z1] != 0 )
»»  {
»»   while ( content[z1] != '=' )
»»   {
»»    z1++;
»»   }

hier fehlt die Abfrage, ob content nicht schon längst zu Ende ist. Wenn also QUERY_STRING definiert ist, aber kein '=' enthält, gibt es hier die nächsten Speicherzugriffsprobleme. Besser also Konstrukte wie

for(z1=0; (content[z1]!=0) (content[z1] != '='); ++z1);

verwenden. Das gleiche gilt auch fuer die folgenden Schleifen in translate()...

int ausgabe()
{

»»  printf("<html><head><title>Temporärest Gaestebuch</title></head>");

Wie schon von Calocybe angedeutet, fehlt hier ein CGI-Header, also sowas wie

printf("Content-Type: text/html\n\n");

Das waren erstmal soweit meine ersten "Beobachtungen" ;-) Falls es danach immer noch Probleme gibt, kannst Du ja einfach nochmal posten...

Bis dannundwann

Andreas