Moin,
also ich hab da eine Funktion:
// Serialize Nameserver Query int serNSQuery(char *query, char *qname, Sho type, Sho class){ char *tok = ".";
… und du hast ein konstantes Token, das nicht als const
deklariert ist:
const char tok[] = ".";
char *pch = NULL; pch = strtok(qname, tok);
… Und du hast da eine Funktion, die man mit Vorsicht verwenden sollte …
int i = 0;
… sowie einen Array-Index eines vorzeichenbehafteten Datentyps …
for( ; pch != NULL; pch = strtok(NULL, tok)){ Oct len = strlen(pch);
… eine Umdefinition des Datentyps size_t
oder einen möglichen Integer-Überlauf …
query[i] = len; memcpy(&query[i+1], pch, len); i += 1 + len; } query[i] = 0; // Terminiern query[i+1] = 0; query[i+2] = 1; // type A query[i+3] = 0; query[i+4] = 1; // class IN int qlen = i + 5; // Länge der Query return qlen; }
und damit ein Problem beim Aufruf.
Eins? Mehrere, siehe oben.
Setze ich
char query[512]; char qname[] = "example.org"; int qlen = serNSQuery(query, qname, 1, 1);
funktioniert alles, wenn ich jedoch die Funktion mit
serNSQuery(query, "example.org", 1, 1)
aufrufe, schmiert die exe ab (es compliliert also). Was hab' ich nicht verstanden!?
Viele Grüße
Robert