KOMATSU Shinichiro
koma2****@lovep*****
2005年 6月 8日 (水) 20:14:33 JST
小松です。 From: Kazuhiko <kazuh****@fdiar*****> Subject: [Hiki-dev:00764] ユーザ管理対応への布石のコミット Date: Tue, Jun 07, 2005 at 06:25:07PM JST > 従来の「管理」だったところが「ログイン」になり、そこで管理者パスワードを > 入れることで「管理」メニューが現れます。管理者以外のパスワードを入れたと > きは、「管理」メニューは現れません。 FreeBSD 上で hiki を新規インストールして試してみたところ、 「ログイン」をクリックするとゴミが表示されます。 cmd_login に対応する template が定義されていないため @template["login"] が nil になり、 Hiki::Config#read_template の File.read( "#{@template_path }/#{@template[cmd]}" ).untaint で @template_path で指定されているディレクトリ自身(directory entry) を読みに行っているためのようです。 Linux だと directory entry を read しようとすると 例外が返ると思うのですが、それはともかく template ファイルがちゃんと存在するかどうか チェックした方がいいと思います。 で、cmd_login に対応する template をどうするのかは かずひこさんにおまかせします。;P -- ┏━━━━━━━━━━━━━━━━━━━━━━┓ 小松 晋一朗 koma2****@lovep***** http://bloghome.lovepeers.org/daymemo2/ ┗━━━━━━━━━━━━━━━━━━━━━━┛ -------------- next part -------------- Index: hiki/config.rb =================================================================== RCS file: /cvsroot/hiki/hiki/hiki/config.rb,v retrieving revision 1.46 diff -u -r1.46 config.rb --- hiki/config.rb 8 Jun 2005 05:12:43 -0000 1.46 +++ hiki/config.rb 8 Jun 2005 11:02:54 -0000 @@ -102,7 +102,12 @@ end def read_template( cmd ) - File.read( "#{@template_path }/#{@template[cmd]}" ).untaint + template = File.join(@template_path, @template[cmd]) + if FileTest.file?(template) + File.read(template).untaint + else + raise Errno::ENOENT, "Template file for \"#{cmd}\" not found." + end end private