echoping 6.0.2 が -m (module) オプションをつけるとエラーになる件
echopingという各種pingが打てるツールを smokeping 経由で愛用してるんだけど、これが、dns pingを打つとエラーになることを発見した。
# ./echoping -m dns Cannot load ".so" (I tried the short name, then the complete name in "/usr/lib64/echoping"): /usr/lib64/echoping/.so: cannot open shared object file: No such file or directory
“dns.so" を読むはずのところで、 “.so" を読みに行ってエラー。なんじゃこれ。
しばらくソースを追っかけて、原因らしきものが分かったのでパッチを書きました。
diff -uNr echoping-6.0.2.orig/echoping.c echoping-6.0.2/echoping.c --- echoping-6.0.2.orig/echoping.c 2007-04-05 21:40:49.000000000 +0900 +++ echoping-6.0.2/echoping.c 2010-01-19 23:25:09.000000000 +0900 @@ -473,7 +473,7 @@ if (plugin_name) { ext = strstr(plugin_name, ".so"); if ((ext == NULL) || (strcmp(ext, ".so") != 0)) - sprintf(plugin_name, "%s.so", plugin_name); + strcat(plugin_name, ".so"); plugin = dlopen(plugin_name, RTLD_NOW); if (!plugin) { /* Retries with the absolute name */
どうやら、 sprintf(plugin_name, “%s.so", plugin_name); と、 宛先と元に同じ変数を使ってるのが悪いみたい。ありそうな話だ。trcatにさくっと書き換えて、今はちゃんと動いています。
chopingについては、WiLiKiのechoping に まとめてあります。
追記: 開発元にパッチ投稿しました。
ディスカッション
コメント一覧
まだ、コメントがありません