php7のmake testでBug #41655がFAILになる

Tetsuro Aoki 61views 更新:2015年12月22日

php7のmake testを実行したところ以下のテストがFAILになりました。

Bug #41655 (open_basedir bypass via glob()) 1/2 [ext/standard/tests/file/bug41655_1.phpt]

要するにglob関数でopen_basedirの制限を回避できてしまうということらしいです。
テスト内容(bug41655.phpt)を確認してみます。

--TEST--
Bug #41655 (open_basedir bypass via glob()) 1/2
--SKIPIF--
<?php
if (substr(PHP_OS, 0, 3) == 'WIN') {
    die('skip not for Windows');
}
?>
--CREDITS--
Dave Kelsey <d_kelsey@uk.ibm.com>
--INI--
open_basedir=/tmp
--FILE--
<?php
$a=glob("./*.jpeg");
var_dump($a);
echo "Done\n";
?>
--EXPECT--
bool(false)
Done

テストでは、

$a=glob("./*.jpeg");

とカレントディレクトリ以下のjpegファイルを検索し、このglobがopen_basedirの設定によって失敗することを期待しています。
一方、

open_basedir=/tmp

と設定しています。
つまり、phpは/tmp以下のファイル以外はopenできない設定になっています。

ここで問題なのは、テストコードでカレントディレクトリ以下に対してglobを実行している点です。
つまり、/tmp以下にテストコードがある場合(php7のソースを/tmp以下に配置してしまった場合)はこのglobは必ず成功してしまい、テスト結果は失敗となってしまいます。
ということで、/tmp以下にphp7のソースコードを置いた場合このFAILは無視してよさそうです。

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません