[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:18581] Re: gnome-same-gnome とかの日本語表示
>>>>> On Tue, 26 Oct 1999 05:18:45 +0900, Toyohiko Nagai <nagai@xxxxxxxxxxxx> said:
gotom> なお、EUC-JP の .so が正しく dynamic loading できている
gotom> (strace の結果による) ことから、またそのとき /usr/lib/gconv
gotom> を正しく expand していることから、libJIS.so の問題であること
gotom> は間違いありません。
TN> この事実を見落としておりました。あとになってBTSの内容をみて、
TN> 「ああ、EUC-JP.soは読めてたのか」と気が付きました。で、いまさ
TN> ら自分の見間違いに気が付いたのですが iconvdata/Makefile では、
TN> LDFLAGS-libJIS.so = -Wl,-soname,$(@F)
TN> となっているところが問題だったんですね。ここに本来、-rpath
TN> $$ORIGIN が入るべきだ、と。先に
TN> LDFLAGS-EUC-JP.so = -Wl,-rpath,'$$ORIGIN'
TN> $(objpfx)EUC-JP.so: $(objpfx)libJIS.so
TN> って書いてあったのを読み違えて早とちりしてました。この部分は
TN> libJIS.so のローディングパスとは何の関係もない記述ですね。情け
TN> ない(;_;
ちょっと違うんじゃないでしょうか。
EUC-JP.soに、-rpathが付けられているのは、これが依存している
ライブラリをそこから探せ、という指定のためでしょう。
で、依存しているライブラリというのが、libJIS.soですね。
では、なぜEUC-JP.soだけ正常にロードされるかというと、絶対パ
ス指定してるからみたいです。
(1) /usr/lib/gconv/EUC-JP.soをロード。絶対パスだから成功する。
(2) EUC-JP.soが依存するlibJIS.soをロードしようとする。本来
-rpathで指定したディレクトリに見つかるはずだが、無視して
るので見つからない。失敗する。
結局のところ、問題は、setuid/setgidプログラムでは、-rpathが
無視されるにも関わらず、EUC-JP.so -> libJIS.soの検索で-rpath
に頼ってしまっているところでしょうか。
解決策としては、/usr/lib/gconvをデフォルトパスに入れてしまう
方法のほかに、libJIS.soのsonameを絶対パス化してしまう方法も
ありそうですが、うまく動きますでしょうか。
--
"Free software is not for free."
Kaz Sasayama <Kaz.Sasayama@xxxxxxxxxxxxxxx>
Hyper Linux Systems (Hypercore Software Design, Ltd.)
<URL:http://www.hypercore.co.jp/>