PHP 5.3.3リリース

PHP開発チームは、PHP 5.3.3を発表しました。 このリリースでは、PHP 5.3.xブランチの安定性とセキュリティの改善に焦点を当て、100以上のバグを修正しました。そのうちのいくつかはセキュリティに関連しています。 すべてのユーザーがこのリリースにアップグレードすることをお勧めします。



後方互換性のない変更:



名前空間のクラスの最後の要素と同じ名前のメソッドは、コンストラクターとして解釈されなくなります。 この変更は、名前空間外のクラスには影響しません。

Copy Source | Copy HTML <?php namespace Foo; class Bar { public function Bar() { // treated as constructor in PHP 5.3.0-5.3.2 // treated as regular method in PHP 5.3.3 } } ?>



  1. Copy Source | Copy HTML <?php namespace Foo; class Bar { public function Bar() { // treated as constructor in PHP 5.3.0-5.3.2 // treated as regular method in PHP 5.3.3 } } ?>



  2. Copy Source | Copy HTML <?php namespace Foo; class Bar { public function Bar() { // treated as constructor in PHP 5.3.0-5.3.2 // treated as regular method in PHP 5.3.3 } } ?>



  3. Copy Source | Copy HTML <?php namespace Foo; class Bar { public function Bar() { // treated as constructor in PHP 5.3.0-5.3.2 // treated as regular method in PHP 5.3.3 } } ?>



  4. Copy Source | Copy HTML <?php namespace Foo; class Bar { public function Bar() { // treated as constructor in PHP 5.3.0-5.3.2 // treated as regular method in PHP 5.3.3 } } ?>



  5. Copy Source | Copy HTML <?php namespace Foo; class Bar { public function Bar() { // treated as constructor in PHP 5.3.0-5.3.2 // treated as regular method in PHP 5.3.3 } } ?>



  6. Copy Source | Copy HTML <?php namespace Foo; class Bar { public function Bar() { // treated as constructor in PHP 5.3.0-5.3.2 // treated as regular method in PHP 5.3.3 } } ?>



  7. Copy Source | Copy HTML <?php namespace Foo; class Bar { public function Bar() { // treated as constructor in PHP 5.3.0-5.3.2 // treated as regular method in PHP 5.3.3 } } ?>



  8. Copy Source | Copy HTML <?php namespace Foo; class Bar { public function Bar() { // treated as constructor in PHP 5.3.0-5.3.2 // treated as regular method in PHP 5.3.3 } } ?>



  9. Copy Source | Copy HTML <?php namespace Foo; class Bar { public function Bar() { // treated as constructor in PHP 5.3.0-5.3.2 // treated as regular method in PHP 5.3.3 } } ?>





名前空間はPHP 5.3でのみ導入されたため、PHP 5.2からの切り替えには重点がありません。



PHP 5.3.3のセキュリティの強化と修正:



var_export()関数は、smart_strを使用して書き直され、出力バッファリングをバイパスして、致命的なエラーが発生したときにデータが展開されないようにしました。 (CVE-2010-2531)。

shm_put_var()でのリソース破壊で起こりうる問題を修正しました。

XORオペレーターの介入による情報漏洩の可能性を修正しました。

呼び出し時の参照による引数の予期しない転送と、コールバック関数によるメモリの後続のマッシングによるメモリ破損の可能性を修正しました。

ArrayObject :: uasort()メソッドでのメモリ破損の可能性を修正しました。

parse_str()関数のメモリ破損の可能性を修正しました。

pack()関数のメモリ破損の可能性を修正しました。

substr_replace()関数のメモリ破損の可能性を修正しました。

addcslashes()関数でのメモリ破損の可能性を修正しました。

fnmatch()関数内のスタックオーバーフローが修正されました。

バッファオーバーフローデチャンクフィルタの可能性を修正しました。

sqlite拡張機能内のメモリへのランダムアクセスの可能性を修正しました。

phar拡張機能内の文字列検証形式を修正しました。

特定のプレフィックス文字を持つセッション変数のシリアル化処理を修正しました。

無効なXML-RPC要求を処理するときのNULLポインターへの参照の削除を修正しました。

SplObjectStorageクラスの逆シリアル化の問題を修正しました。

mysqlnd_list_fields、mysqlnd_change_userで発生する可能性があるバッファオーバーフローを修正しました。

mysqlndでエラーのあるパケットを処理する際に起こりうるバッファオーバーフローが修正されました。



PHP 5.3.3の主な改善点は次のとおりです。



インストールパッケージに含まれるsqliteをバージョン3.6.23.1に更新しました

インストールパッケージに含まれるPCREはバージョン8.02に更新されます

FastCGI Process Manager(FPM)がSAPIに追加されました。

mcrypt拡張ストリームフィルターを追加(mcrypt_filterから移植)。

full_special_charsフィルターをext /フィルター拡張に追加しました。

ガベージコレクターの再帰的なアクティブ化によるエラーの可能性を修正しました。

バグ#522238(iterator_to_array関数の実行中に例外をスローするとクラッシュする)が修正されました。

バグ#52041(関数から戻るときに初期化されていないものに書き込むときのメモリリーク)は修正されました。

バグ#52060(クロージャをmethod_exists()関数に渡すときのメモリリーク)が修正されました。

バグ#52001(変数変数を使用した後のメモリ割り当てエラー)が修正されました。

バグ#51723が修正されました(Content-lengthヘッダーは、WindowsプラットフォームのApache2では32ビット整数に制限されます)。

バグ#48930が修正されました(__COMPILER_HALT_OFFSET__はPHP> = 5.3では正しく機能しません)。



完全な変更ログ:



-インストールパッケージに含まれるsqliteをバージョン3.6.23.1に更新

-インストールパッケージに含まれているPCREをバージョン8.02に更新



-json_encode()関数にオプションJSON_NUMERIC_CHECKを追加しました。これは、数値を文字列として整数に変換します。

-関数stream_set_read_bufferを追加しました。これにより、ストリームからの読み取り操作用のバッファーを設定できます。

-mcrypt拡張ストリームフィルターを追加(mcrypt_filterから移植)。

-full_special_charsフィルターをext /フィルター拡張に追加しました。

-stream_socket_server()関数のソケットコンテキストの未送信パケット数のオプションを追加しました。

-openssl_encrypt()/ openssl_decrypt()関数に5番目のパラメーターを追加しました

(string $ iv)ゼロ以外の初期化ベクトルを使用します。

暗黙的にゼロ初期化ベクトルを使用すると、警告が送信されます。

-openssl_cipher_iv_length()関数を追加しました。

-FastCGI Process Manager(FPM)がSAPIに追加されました。

-Windowsの一般的なバージョンをphp_uname関数に追加し、Windowsの不明なバージョンのサポートを修正しました。

-DBA拡張機能にBerkeley DB 5のサポートが追加されました。

-pdo_pgsql拡張機能の配列/ファイルへのコピー/からのコピーのサポートを追加しました。

-特別なPostgresをサポートするinDOaction()メソッドをPDOに追加しました。



-名前空間のクラスを変更したため、コンストラクタは__constructを介してのみ指定できます。

-PDO :: beginTransaction()でエラー状態をリセットします。



-実装されたFR#51295(存在しないSQLite3 :: busyTimeout)

-FR#35638を実装(imap_fetch_overview関数の結果に日付を追加)。

-var_export()関数は、smart_strを使用して書き直され、致命的なエラーが発生した場合のデータ漏えいを防ぐために、出力バッファリングをバイパスします。 (CVE-2010-2531)。

-mysqlnd_list_fields、mysqlnd_change_userで発生する可能性があるバッファオーバーフローを修正しました。

-mysqlndでエラーのあるパケットを処理する際に起こりうるバッファオーバーフローを修正しました。

-数千の列をアタッチする際のmysqlndでの非常にまれなメモリリークを修正

-PDOStatementから継承し、PDOメソッドによる作成をバイパスしてインスタンスが直接作成される、存在しないクラスメソッドを呼び出すときのバグを修正しました。



-Windowsプラットフォームでのmcrypt_create_ivの誤ったメモリリークを修正しました。

-ガベージコレクターの再帰的なアクティブ化によるエラーの可能性を修正しました。

-shm_put_var()のリソース破壊で発生する可能性のある問題を修正しました。

-XORオペレーターの介入による情報漏洩の可能性を修正。

-コール時の参照による引数の予期しない転送と、コールバック関数によるメモリの後続のマッシングによるメモリ破損の可能性を修正しました。

-ArrayObject :: uasort()メソッドでのメモリ破損の可能性を修正しました。

-parse_str()関数のメモリ破損の可能性を修正しました。

-pack()関数のメモリ破損の可能性を修正しました。

-substr_replace()関数のメモリ破損の可能性を修正しました。

-addcslashes()関数でのメモリ破損の可能性を修正しました。

-fnmatch()関数内のスタックオーバーフローを修正しました。

-バッファオーバーフローデチャンクフィルタの可能性を修正。

-sqlite拡張機能内のメモリへのランダムアクセスの可能性を修正しました。

-phar拡張機能内の文字列検証形式を修正しました。

-特定のプレフィックス文字を持つセッション変数のシリアル化処理を修正しました。

-無効なXML-RPCリクエストを処理する際のNULLポインターへの参照の削除を修正しました。

-mhash_keygen_s2k()関数の64ビット整数のオーバーフローを修正しました。

-SplObjectStorageクラスの逆シリアル化の問題を修正しました。

-ファイル名が指定されていない場合のini mail.log設定を修正しました。



-バグ番号522317(rhel 4.x(64ビットのみ)でmail()関数を使用した場合のセグメンテーションエラー)を修正しました。

-バグ#522262を修正しました(json_decode()は無効なUTF-8のデコード時にエラーを表示しませんでした)。

-バグ#5240を修正しました(hash_copy()関数はHMACキーをコピーしなかったため、誤った結果とPHPがクラッシュしました)。

-バグ番号522238(iterator_to_array関数の実行中に例外をスローするとクラッシュする)を修正しました。

-バグ#52193を修正(クロージャを配列に変換すると空の配列になりました)。

-バグ#52183が修正されました(ReflectionFunctionクラスでは、関数エイリアスの引数の数が間違って表示されていました)。

-バグ#52162を修正(番号が削除されたユーザー定義のリクエストヘッダー変数)。

-バグ#52160を修正(コンストラクターの再定義時のE_STRICTレベルの誤ったエラー)。

-バグ番号52138(iniファイルでセクション名として解析される定数)を修正しました。

-バグ#52115を修正(mysqli_result :: fetch_allは空の配列ではなくnullを返します)。

-バグ#52101(Windowsプラットフォームの 'ipv6'フィールドでdns_get_record()によって返されるガベージ)が修正されました。

-バグ#52082を修正(mysqli_change_user()を呼び出した後にcharacter_set_clientとcharacter_set_connectionをリセット)

-バグ#52043を修正(GDは最新のlibJPEGライブラリを認識しませんでした)。

-バグ#52041(関数から戻るときに初期化されていないものに書き込むときのメモリリーク)が修正されました。

-バグ#52060(クロージャをmethod_exists()関数に渡すときのメモリリーク)が修正されました。

-バグ#52057を修正しました(ReflectionClassはClosureクラスを処理できませんでした)。

-バグ#52051を修正(5.3+では、古いスタイルのコンストラクターの大文字と小文字を区別する処理が変更されました)。

-バグ#52037(インストールプログラムの競合ビルドエラー)を修正しました。

-バグ#52019を修正(lcovはTESTS変数をサポートしなくなりました)。

-バグ#52010(vacuumコマンドでのopen_basedir制限のバグ)が修正されました。

-バグ番号52001(変数変数使用後のメモリ割り当てエラー)を修正しました。

-バグ#51991を修正しました(spl_autoloadおよび* nixの名前空間のサポート)。

-バグ#51943を修正(AIX:いくつかのファイルがANSI仕様を超えた)。

-バグ#511911(定数配列のReflectionParameter :: getDefaultValue()を呼び出すときのメモリリーク)を修正しました。

-バグ#51905を修正しました(デフォルト値がself::へのアクセスを持つ配列の場合、ReflectionParameterは機能しませんでした)。

-バグ#51899(空の値の後に改行文字がない場合のParse_ini_file()解析エラー)を修正しました。

-バグ#51844を修正(checkdnsrrはMX以外のタイプのレコードをサポートしませんでした)。

-バグ#51827(register_shutdown_functionが間違った数の引数で呼び出された場合の誤った警告)を修正しました。

-バグ#51822(静的クラス変数の奇妙な__destruct()によるセグメンテーションエラー)を修正しました。

-バグ#51791が修正されました(アンインストールされた定数のチェックに失敗した後、定数()関数が実行を中断しました)。

-バグ#51732を修正しました(__constructまたはOpen FileinfoがNULLで動作しませんでした)。

-バグ#51725を修正(xmlrpc_get_type()は日付が正しくない場合にtrueを返しました)。

-バグ#51723を修正しました(WindowsプラットフォームのApache2では、Content-lengthヘッダーは32ビット整数に制限されます)。

-バグ#51721を修正しました(DOMNodeListおよびDOMNamedNodeMapはTraversableとしてマークされています)。

-バグ#511712を修正しました(mysql_mysqlnd_read_timeout_longの確認はMySQL4では機能しません)。

-バグ#51697を修正(free_storage SPLイテレーターでの安全でない操作がシャットダウン中にクラッシュを引き起こした)。

-バグ#51690(Phar :: setStubが大文字と小文字を区別する__HALT_COMPILER()をチェックした)を修正しました。

-バグ#51688を修正しました(ドキュメントルートが正しく指定されていないと、ディレクトリごとのiniがクラッシュしました)。

-バグ#51671を修正しました(小さな画像でのイメージフィルが正しく機能しない)。

-バグ#51670を修正しました(nextRowsetを呼び出した後にクエリが繰り返されると、getColumnMetaがセグメンテーションエラーを引き起こしました)。

-バグ#51647を修正(秘密鍵のない証明書ファイル(別のファイルの秘密鍵)が機能しなかった)。

-バグ#51629(誤解を招くエラーメッセージCURLOPT_FOLLOWLOCATION)を修正。

-バグ#51627を修正しました(スクリプトパスが正しく解釈されませんでした)。

-バグ#51624(mysqli_options()を呼び出すとクラッシュする)を修正しました。

-バグ#51615を修正(不正なHTMLをSimpleXMLに送信するとPHPがクラッシュしました)。

-バグ#51609を修正しました(pg_copy_to:4番目の引数を使用した場合の誤った結果)。

-バグ#51608を修正しました(pg_copy_to:警告:非標準の文字列リテラルでの\\の使用)。

-バグ#51607を修正しました(pg_copy_fromでは、テーブル名引数でスキーマを指定できませんでした)。

-バグ#51605(Mysqli-ゾンビリンク)を修正。

-バグ#51604(ヘッダーの最後の改行がメッセージの最初に表示されていた)を修正しました。

-バグ#51590(未定義の定数JSON_ERROR_UTF8)を修正しました。

-バグ#51583を修正しました(mysqlndの場所が正しくないためにバスエラーが発生しました)。

-バグ#51582を修正(UINT64_Cが利用可能になると想定しないでください)。

-バグ#51577(oci_bind_array_by_nameの未初期化メモリ参照)を修正しました。

-バグ#51562を修正しました(mssqlのリクエストタイムアウトは、個別のリクエストに対して変更できません)。

-バグ#51552が修正されました(debug_backtrace()はセグメンテーションエラーやメモリの問題を引き起こしました)。

-バグ#51445を修正(var_dump()の定義が正しくない/遅い* RECURSION *)。

-バグ#51435を修正しました(暗号化コードにifdef /論理エラーがないと、コンパイルエラーが発生する可能性があります)。

-バグ#51424(3回目の呼び出し後に暗号化()関数がフリーズする)を修正しました。

-バグ#51394を修正(エラーハンドラーが例外をスローした場合、エラー文字列が正しく定義されない)。

-バグ#51393を修正しました(DateTime :: createFromFormat()は、フォーマット文字列にタイムゾーンが含まれていると機能しませんでした)。

-バグ#51347(メモリリークmysqli_close / connection)を修正しました。

-バグ#51338(use_only_cookiesが設定されている場合でもURL置換が機能する)を修正しました。

-バグ#51291が修正されました(oci_errorは2回呼び出されたときに最後のエラーを報告しませんでした)。

-バグ#51212を修正しました(HAVE_LIBDLが定義されていない場合、php_load_extension()は存在しません)。

-バグ#51273を修正(faultstringが空の場合、faultstringプロパティは存在しません)。

-バグ#51269を修正(zlib.output_compressionはVaryヘッダーを書き直しました)。

-バグ#51257が修正されました(libcurlバージョン7.10.1の後、CURL_VERSION_LARGEFILEが誤って使用されます)。

-バグ#51242を修正(空のmysql.default_port構成設定は、デフォルトでは3306として定義されなくなりましたが、0として定義されました)。

-バグ#51237(起動時にSAPIがクラッシュする)を修正。

-バグ#511213を修正しました(pdo_mssqlはmoney型の列の値を切り捨てます)。

-バグ#511190(ftp_put()が正常に送信されるとfalseを返す)を修正しました。

-バグ#511183を修正しました(ext / date / php_date.cはSun Studioを使用してコンパイルしません)。

-バグ#511176を修正しました(非静的メソッドへの静的呼び出しは$ this->のように機能します)。

-バグ#51171が修正されました(存在しないオプションが指定された場合、curl_setopt()はエラーや警告を表示しません)。

-バグ#51128を修正しました(imagefill()は大きな画像では動作しません)。

-バグ#51096が修正されました(日付のある行を解析すると、「最終日」と「初日」が正しく処理されません)。

-バグ#51086を修正(DBA DB4はBerkeley DB 4.8では動作しません)。

-バグ#51062を修正(DBA DB4は誤ったヘッダーとライブラリを使用)。

-バグ番号51026を修正しました(mysqli_ssl_setが機能しません)。

-バグ#51023を修正(GCC 4.4ではフィルターは整数オーバーフローをサポートしません)。

-バグ番号50999(dba_fetch()のニュートラルメモリへのアクセス)を修正しました。

-バグ#50976を修正(SOAPヘッダーによる認証は許可されていません)。

-バグ#50828を修正(DOMNotationはDOMNodeクラスの子ではありません)。

-バグ#50810を修正(propert_existsはプライベートプロパティでは機能しません)。

-バグ#50762を修正(WSDLモードでは、SOAPヘッダーハンドラー関数は、WSDLで指定されている場合にのみ呼び出されます)。

-バグ#50731を修正(spl_autoload_registerで登録された関数に一貫性のない名前空間が送信される)。

-バグ#50563を修正(parse_url関数からE_WARNINGを削除)。

-バグ#50578を修正(phar.pharの間違ったもの(?))。

-バグ番号50555を修正(DateTime :: sub()は相対時間の変更を許可します)。

-バグ番号50392を修正しました(date_create_from_formatはフォーマット文字 'u'に6つの数字を強制します)。

-バグ#50383を修正しました(__call / __callStaticでスローされた例外には、トレース情報にファイルと行が含まれていませんでした)。

-バグ番号50358(ext / phar / util.loのコンパイルエラー)を修正しました。

-バグ番号50101(ローカル変数名とグローバル変数名の交差)を修正しました。

-バグ#51002が修正されました(非常に長い名前でのメモリ破損の可能性が修正されました)。

-バグ#49893を修正(Zend_Mail_Storage_Pop3のインスタンスを作成するとクラッシュする)。

-バグ#49819を修正しました(STDOUTはposix_isatty()でデータを失います)。

-バグ番号49778を修正(DateInterval :: format( "%a")は、ISO形式の文字列から間隔が作成される場合、常にゼロです)。

-バグ#49700(ガベージコレクターがオンの場合のphp_date.cのメモリリーク)を修正しました。

-バグ#49576を修正(フィルターFILTER_VALIDATE_EMAILの更新が必要)。

-バグ#49490(XPath名前空間プレフィックスの競合)を修正しました。

-バグ番号49429を修正しました(odbc_autocommitは機能しません)。

-バグ#49320を修正(SQLite接続が失敗するとPDOはnullを返します)。

-バグ修正#49234(mysqli_ssl_setが見つかりません)。

-バグ#49216を修正しました(mysqliクラスでは反射は正しく機能しません)。

-バグ#49192を修正しました(ガベージコレクターがCOMオブジェクトで実行されているとPHPがクラッシュします)。

-バグ#49181が修正されました(1月に開始され、間隔が28日を超える場合、DateTime :: diff()エラー)。

-バグ#49059(DateTime :: diff()が前の操作sub()を繰り返す)を修正しました。

-バグ#48983(DOMDocumentのエンコードが正しくありません:saveHTMLFile)を修正しました。

-バグ#48930を修正しました(__COMPILER_HALT_OFFSET__はPHP> = 5.3では正しく動作しません)。

-バグ#48902を修正(時間変換データベースは古くなっています)。

-バグ#48781(サイクリックガベージコレクターのメモリリーク)が修正されました。

-バグ#48601を修正(xpath()は正当なリクエストに対してFALSEを返します)。

-バグ#48361を修正(SplFileInfo :: getPathInfoは親ディレクトリを返す必要があります)。

-バグ#48289が修正されました(iconv_mime_encode()のquoted-printable関数の図は壊れています)。

-バグ#47842を修正(sscanf()は64ビット値をサポートしません)。

-バグ番号46111を修正しました(一部のタイムゾーン識別子を処理できませんでした)。

-バグ#45808(stream_socket_enable_crypto()がブロックしてプロセッサリソースを消費する)を修正しました。

-バグ#43333(WindowsプラットフォームでのldapのSASLサポート)を修正しました。

-バグ#35673を修正(formatOutputはsaveHTMLで動作しません)。

-バグ#331010を修正(getimagesize()は一部のJPEGファイルの幅/高さを決定できません)。



All Articles