[PHP-users 27429] Re: safe_mode における imagejpeg 関数
Ryuzo KOSAKI
kosaki @ fip.fujitsu.com
2005年 11月 9日 (水) 14:53:25 JST
こさきです。この件、私の環境でも影響が出たので調べてみました。
"[PHP-users 27342] Re:safe_modeにおけるimagejpeg関数" の記事において
luna @ lunanet.gr.jpさん は書きました。
>とりとめなくて申し訳ないんですが、とりあえず4.4.1でgd関数にsafe_mode判定
>が追加されたのではないでしょうか。
>現状の動作がphpとして予定通りのものなのかどうかは、僕には判りません。
判定が追加されたのは、仕様の追加ということで問題ないと思います。(推定)
しかしファイルが存在しないとエラーになるのは、単なるバグのようです。
根拠:
http://cvs.php.net/php-src/ext/gd/php_gd.h (1.59.2.2のコメント)
4.4.1の main/safe_mode.c 37行目付近と66行目付近
おそらく、4.4.1にこのパッチをあてれば大丈夫なはずです。
今のところ4.3.11にセキュリティパッチをあてた状態から、変更確認
する時間がないので、机上デバッグだけですが。
---------------------------------------------------------------
--- ext/gd/gd.c Fri Oct 7 05:44:52 2005
+++ ext/gd/gd.c Wed Nov 9 14:19:24 2005
@@ -1644,7 +1644,7 @@
}
if ((argc == 2) || (argc > 2 && Z_STRLEN_PP(file))) {
- if (!fn || fn == empty_string || php_check_open_basedir(fn TSRMLS_CC) || (PG(safe_mode) && !php_checkuid(fn, "rb+", CHECKUID_CHECK_FILE_AND_DIR))) {
+ if (!fn || fn == empty_string || php_check_open_basedir(fn TSRMLS_CC) || (PG(safe_mode) && !php_checkuid(fn, NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid filename '%s'", fn);
RETURN_FALSE;
}
--- ext/gd/gd_ctx.c Fri Oct 7 05:44:52 2005
+++ ext/gd/gd_ctx.c Wed Nov 9 14:19:47 2005
@@ -73,7 +73,7 @@
}
if ((argc == 2) || (argc > 2 && Z_STRLEN_PP(file))) {
- if (!fn || fn == empty_string || php_check_open_basedir(fn TSRMLS_CC) || (PG(safe_mode) && !php_checkuid(fn, "rb+", CHECKUID_CHECK_FILE_AND_DIR))) {
+ if (!fn || fn == empty_string || php_check_open_basedir(fn TSRMLS_CC) || (PG(safe_mode) && !php_checkuid(fn, NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid filename '%s'", fn);
RETURN_FALSE;
}
---------------------------------------------------------------
PHP-users メーリングリストの案内