[Svn-src-all:2679] [version-2_12-dev 21578] #1680 (SC_CheckError#evalCheck 'false' 以外で、値が false の定数名を渡すとエラーと誤評価する)

Seasoft admin @ mail.ec-cube.net
2012年 3月 3日 (土) 02:54:09 JST


Subversion committed to /home/svn/open 21578
http://svn.ec-cube.net/open_trac/changeset/21578
┌────────────────────────────┐
│更新者 :  Seasoft                                      │
│更新日時:  2012-03-03 02:54:09 +0900 (土, 03  3月 2012)│
└────────────────────────────┘

Log:
--------------------------------------------------------
#1680 (SC_CheckError#evalCheck 'false' 以外で、値が false の定数名を渡すとエラーと誤評価する)

Changed:                      [U:修正,A:追加,D:削除]
--------------------------------------------------------
U   branches/version-2_12-dev/data/class/SC_CheckError.php

変更: branches/version-2_12-dev/data/class/SC_CheckError.php
===================================================================
--- branches/version-2_12-dev/data/class/SC_CheckError.php	2012-03-02 14:12:02 UTC (rev 21577)
+++ branches/version-2_12-dev/data/class/SC_CheckError.php	2012-03-02 17:54:09 UTC (rev 21578)
@@ -1155,7 +1155,7 @@
     }
 
     /**
-     * PHPコードとして評価可能かチェックする.
+     * パラメーターとして適切な文字列かチェックする.
      *
      * @access private
      * @param array $value [0] => 項目名, [1] => 評価する文字列
@@ -1172,19 +1172,18 @@
     }
 
     /**
-     * $value が PHPコードとして評価可能かチェックする.
+     * パラメーターとして適切な文字列かチェックする.(サブルーチン)
      *
+     * 下記を満たす場合を真とする。
+     * ・PHPコードとして評価可能であること。
+     * ・評価した結果がスカラデータ(定数に指定できる値)であること。
+     * 本メソッドの利用や改訂にあたっては、eval 関数の危険性を意識する必要がある。
      * @access private
-     * @param mixed PHPコードとして評価する文字列
-     * @return mixed PHPコードとして評価できない場合 false,
-     *               評価可能な場合は評価した値
+     * @param string 評価する文字列
+     * @return bool パラメーターとして適切な文字列か
      */
     function evalCheck($value) {
-        // falseは、正当な式と評価する。
-        if ($value === 'false') {
-            return true;
-        }
-        return @eval('return ' . $value . ';');
+        return @eval('return is_scalar(' . $value . ');');
     }
 
     /**




Svn-src-all メーリングリストの案内