[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(やファイル)からの生成となると思いますが、現状はカタログからの生成部分で
躓いている状態です。