From: nobu.nakada@... Date: 2003-08-27T13:40:02+09:00 Subject: [ruby-dev:21271] Re: Regexp#initializeが $SAFE==4 で落ちる なかだです。 At Wed, 27 Aug 2003 00:16:04 +0900, Yukihiro Matsumoto wrote: > |> これだと$stderrを置き換える手が使えなくなりませんか? > | > |でも今のところ、http://mput.dip.jp:8080/mput/?date=20030826#p05 > |のように、$stderrを置き換えてもwrite自体で例外になるので使えま > |せん。 > > require 'stringio' > $stderr = StringIO.new("".taint) # ←ここ重要 > Thread.start { $SAFE=4 > Regexp.new(//, Regexp::IGNORECASE) > }.join > p $stderr.string > > は動くみたいですけど。$SAFE=4のコードときちんと通信するのは > それなりに難しいというだけのことでは。 そういやそうでした。絶賛忘却中。 > |今思い付いたんですが、ArrayみたいにtaintされたIOに対するwriteで > |は例外にしないとか。 > > 検討の余地はあるかも。 StringIOの場合は、自分がtaintされたらstringもtaintでしょうか。 > |> また、$SAFE=4でabort(3)が呼ばれるのも避けたい気がします。 > |> いや、後者はbugなんだから直せよって気はしますが。 > | > |そもそもrb_bug()はabort()を呼ぶためのものなので、違いは警告を出 > |すかどうかだけです。 > > んじゃ、こっちは採用ということで。 [ruby-dev:21264]だと、ついでにwriteの呼び出しを減らすようにして るんですが、\nを別にしている積極的な理由ってありましたっけ。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦