[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/>