Kazuhiko
kazuh****@fdiar*****
2004年 12月 14日 (火) 14:27:02 JST
こんにちは。かずひこです。 At Tue, 14 Dec 2004 14:06:08 +0900, KAKUTANI Shintaro wrote: > かくたにです。 先日の発表の PDF を会社のみんなで楽しく拝見しました。:) > attach_pathはuntaintしても大丈夫かな、と思ったので > 以下の対応で動かしています。 ご報告ありがとうございます。たしかにそうですね。 > < Dir.mkdir(attach_path) unless test(?e, attach_path) > --- > > Dir.mkdir(attach_path) unless test(?e, attach_path.untaint) Dir.mkdir(cache_path) unless test(?e, cache_path.untaint) attach_path = "#{cache_path}/#{page.untaint.escape}" Dir.mkdir(attach_path) unless test(?e, attach_path) この上の page を untaint しているから合わせても大丈夫だと思っていました。 というわけで、 Dir.mkdir(cache_path) unless test(?e, cache_path.untaint) attach_path = "#{cache_path}/#{page.escape}" Dir.mkdir(attach_path) unless test(?e, attach_path.untaint) こんな感じにしました。ついでに空ディレクトリの削除のあたりがまちがえてい たので直しました。こんな感じのパッチでコミットする予定です。 # detach の際の attach_path がなぜ tainted でないのかいまいち謎だけど... Index: attach.cgi =================================================================== RCS file: /cvsroot/hiki/hiki/misc/plugin/attach/attach.cgi,v retrieving revision 1.10 diff -u -r1.10 attach.cgi --- attach.cgi 22 Sep 2004 15:10:02 -0000 1.10 +++ attach.cgi 14 Dec 2004 05:24:54 -0000 @@ -40,8 +40,8 @@ begin Dir.mkdir(cache_path) unless test(?e, cache_path.untaint) - attach_path = "#{cache_path}/#{page.untaint.escape}" - Dir.mkdir(attach_path) unless test(?e, attach_path) + attach_path = "#{cache_path}/#{page.escape}" + Dir.mkdir(attach_path) unless test(?e, attach_path.untaint) path = "#{attach_path}/#{CGI.escape(NKF.nkf('-e', filename))}" open(path.untaint, "wb") do |f| f.print params['attach_file'][0].read @@ -67,7 +67,7 @@ r << "FILE = #{path}\n" end end - Dir::rmdir(attach_path) if 2 == Dir::entries(attach_path) + Dir::rmdir(attach_path) if Dir::entries(attach_path).size == 2 rescue Exception r << "#$! (#{$!.class})\n" r << $@.join( "\n" ) -- かずひこ <http://wiki.fdiary.net/kazuhiko/> ★シャア「名字が付いてない」 ☆一兵卒「あんなの飾りです。偉い人にはそれが分からんのです」