[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 メーリングリストの案内