[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[kagemai-users:0595] Re: ruby1.8.5で動作せず



えとーです。
ちっとVMWareでcleanな環境作ってたら遅くなりました。。。

On Mon, 30 Oct 2006 23:47:27 +0900 (JST)
Kouhei Sutou <kou@xxxxxxxxxxxx> wrote:

> 須藤です.
> 
> In <20061030225646.ec360270.yasuo@xxxxxxxx>
>   "[kagemai-users:0593] Re: ruby1.8.5で動作せず" on Mon, 30 Oct 2006 22:56:46 +0900,
>   Eto Yasuo <yasuo@xxxxxxxx> wrote:
> 
> > [Fri Oct 20 01:23:51 2006] [error] [client 127.0.0.1] client denied by server co
> > nfiguration: /home/foo/site/kagemai/index.html
> > /usr/share/kagemai//lib/kagemai/message_bundle.rb:69:in `intern': Insecure: can'
> > t intern tainted string (SecurityError)
> 
> たぶん,やまださんが示してくれたやつが原因だと思います.
> 
> 手元では,FreeBSDのruby 1.8.5だと
> 
>   $ ruby -e '$SAFE=1; s="foo"; s.taint; s.intern'
>    -e:1:in `intern': Insecure: can't intern tainted string (SecurityError)
>            from -e:1
> 
> が再現せずにDebianのruby 1.8.5だと再現しました.

うーん、環境依存なのは気持悪いですね。。。

> とりあえずでよければ
> 
> > [該当行を含むメソッド]
> >  59     def load_messages(file)
> >  60       file.each do |line|
> >  61         line = line.sub(/#.*/, '').strip()
> >  62         next if line.empty?
> >  63 
> >  64         key, *message = line.split(/=/)
> >  65         key = key.to_s.strip
> 
>                   key = key.to_s.strip.untaint
> 
> これでうごきませんか?

「key = key.to_s.strip.untaint」だけを実行してみましたところ、
日曜段階で自分が修正したのと同様の状態になりました、エラーなどは
出なくなりますが、リンクの処理(具体的には hrefメソッド) が全て
動いていないように見えます。(勘違いの可能性大。

同じメッセージカタログから生成されている文字を使っているので、
どこが問題になっているのか理解できていません。。。

> >  66         message = message.join('=').to_s.strip
> >  67         next if (key.empty? || message.empty?)
> >  68 
> >  69         @messages[key.intern] = message
> >  70       end
> >  71     end
> 
> 
> 他にも,ファイルなど外部から入力された文字列をuntaintしてや
> れば動くと思います.

こちらはやってみてませんが、、、外部からの文字操作だと、カタログからの生成。
DB(やファイル)からの生成となると思いますが、現状はカタログからの生成部分で
躓いている状態です。