Changeset 21578


Ignore:
Timestamp:
2012/03/03 02:54:09 (12 years ago)
Author:
Seasoft
Message:

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_12-dev/data/class/SC_CheckError.php

    r21527 r21578  
    11561156 
    11571157    /** 
    1158      * PHPコードとして評価可能かチェックする. 
     1158     * パラメーターとして適切な文字列かチェックする. 
    11591159     * 
    11601160     * @access private 
     
    11731173 
    11741174    /** 
    1175      * $value が PHPコードとして評価可能かチェックする. 
    1176      * 
     1175     * パラメーターとして適切な文字列かチェックする.(サブルーチン) 
     1176     * 
     1177     * 下記を満たす場合を真とする。 
     1178     * ・PHPコードとして評価可能であること。 
     1179     * ・評価した結果がスカラデータ(定数に指定できる値)であること。 
     1180     * 本メソッドの利用や改訂にあたっては、eval 関数の危険性を意識する必要がある。 
    11771181     * @access private 
    1178      * @param mixed PHPコードとして評価する文字列 
    1179      * @return mixed PHPコードとして評価できない場合 false, 
    1180      *               評価可能な場合は評価した値 
     1182     * @param string 評価する文字列 
     1183     * @return bool パラメーターとして適切な文字列か 
    11811184     */ 
    11821185    function evalCheck($value) { 
    1183         // falseは、正当な式と評価する。 
    1184         if ($value === 'false') { 
    1185             return true; 
    1186         } 
    1187         return @eval('return ' . $value . ';'); 
     1186        return @eval('return is_scalar(' . $value . ');'); 
    11881187    } 
    11891188 
Note: See TracChangeset for help on using the changeset viewer.