Comment déboguer 'Stack Smashing détecté'?

J'ai un complexe de code c++.

C'est un FastCGI programme, à l'aide de http://althenia.net/fcgicc

Quand j'ai demander pour un looooong url, je reçois

*** stack smashing detected ***: ./tileserve terminated
Erreur de segmentation

Pour la vraie vie, ce n'est pas un problème, puisque je n'ai jamais utiliser donc de longues url, mais ça veut dire que n'importe qui pourrait mettre fin à mon serveur.... Je n'aime pas ça.

Est-il un outil (et comment l'utiliser?) pour trouver d'où vient le problème ?

EDIT : RÉSOLU

Ok résolu.

Je faisais

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());

Dirait que 200 était trop haute pour le len de test.
Il fait échec à 194.

J'ai donc fait :

if (len > 190) return 1;

C'est bien.

source d'informationauteur user1219721