У меня есть сложный код С++.
Это программа FastCGI, используя http://althenia.net/fcgicc
Когда я прошу его использовать looooong url, я получаю
*** stack smashing detected ***: ./tileserve terminated
Erreur de segmentation
Для реальной жизни это не проблема, так как я никогда не использую такие длинные URL-адреса, но это означает, что любой может прекратить мой сервер... Мне это не нравится.
Есть ли инструмент (и как его использовать?), чтобы узнать, где возникает проблема?
EDIT: SOLVED
Хорошо.
Я делал
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());
Похоже, что 200 был слишком высоким для теста len. Это на самом деле не удается на 194.
Итак, я сделал:
if (len > 190) return 1;
Теперь это нормально.