[Hiki-dev:00767] Re: ユーザ管理対応への布石のコミット

Back to archive index

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


Hiki-dev メーリングリストの案内
Back to archive index