Ich habe einen komplexen C++ Code.Wie debugge 'Stack smashing detected'?
Es ist ein FastCGI-Programm, mit http://althenia.net/fcgicc
Als ich es für eine looooong url fragen, ich
*** stack smashing detected ***: ./tileserve terminated
Erreur de segmentation
Für wirkliche Leben, es ist kein Problem, da ich noch nie so lange Urls verwenden, aber es bedeutet, dass irgendjemand meinen Server beenden könnte ... das mag ich nicht.
Gibt es ein Tool (und wie man es benutzt?), Um herauszufinden, wo das Problem auftritt?
BEARBEITEN: Gelöst
Ok gelöst.
Ich war
int len;
char uri[200];
len = strlen(request.params[std::string("REQUEST_URI")].c_str());
printf("%d\n", len);
if (len > 200) return 1;
strcpy(uri, request.params[std::string("REQUEST_URI")].c_str());
tun Sieht aus wie die 200 zu Höhe für den len Test war. Es fehlt eigentlich an 194.
Also habe ich:
if (len > 190) return 1;
Nun, es ist in Ordnung.
Stack-Trace kann Ihnen einen Hinweis geben. – Mahesh
+1 für'Erreur de segmentation' – trojanfoe
Was ist Stack trace? – user1219721