複雑な C++ コードがあります。これは、 FastCGI C++ クラス ライブラリを使用した FastCGI プログラムです。
非常に長いURLを要求すると、次のようになります。
*** stack smashing detected ***: ./tileserve terminated
Erreur de segmentation
実際のアプリケーションでは、私はそれほど長い URL を使用したことがないので問題にはなりませんが、これは、誰かが私のサーバーを終了できることを意味します... 私はそれが好きではありません。
この問題が発生する場所を見つけるツールはありますか? どうやって使うの?
編集:解決済み
私はこれをしていました:
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;
さて、大丈夫です。