いわたさんにさらに教えて頂きました。ありがとうございます。
ところで、uim-helper.cのuim_helper_get_pathnameと prime.cのprime_get_ud_pathは、”/tmp”上に作るので、こちらは上記の問題があるのではないでしょうか。
確かに helper の socket パスは /tmp/uim-username/ とかのユーザのみ読み書きできるディレクトリを作った方がいいかもしれません。ただ現状でも uim では socket の credentials を使っているので、ユーザ以外が動かしているソケットには接続しないようになっています。
popen(というよりsh)のglobbing ruleを気にするくらいならば、昔ながらのfork, exec, pipeをすべきではないでしょうか。これだと、それぞれの段階でエラー処理を制御できるので、問題点を洗い出しやすいコードになるのではないかと思います。
一方、popenでは満足なエラー通知はできません(OpenBSD-man:popenのBUGS参照)。
なるほどエラー処理の問題ですね。そういえば以前 skk-look を使えるようにしたときuim-fep の山本さんにも uim_ipc_open_command() を使ったほうがいいと指摘されたような気がします。
uim-skk はもうかれこれ一年以上いじっていないのですが、おかしな点がありましたらどしどしパッチを送って頂けるとありがたいです。