リリース日: 2012-02-27
このリリースは8.3.17に対し、各種の不具合を修正したものです。 8.3メジャーリリースにおける新機能についてはE.198を参照してください。
8.3.Xからの移行ではダンプ/リストアは不要です。
しかしながら、8.3.17より前のバージョンからアップグレードする場合は、E.181を参照してください。
CREATE TRIGGER
においてトリガ関数に対する実行権限が必要になりました。(Robert Haas)
この検査が無かったため、別のユーザが自身が所有するテーブルにその関数をインストールすることで、偽造した入力データでトリガ関数を実行することができました。
SECURITY DEFINER
が付いたトリガ関数でのみ重大です。
その他のトリガ関数ではとにかくテーブル所有者として実行されるためです。(CVE-2012-0866)
pg_dumpのコメントに記述された名前の中の改行を空白に変換します。(Robert Haas)
pg_dumpは、その出力スクリプトにおけるSQLコメント内で発行されるオブジェクト名のサニタイズに関して注意を払っていませんでした。 改行を含む名前は少なくともそのスクリプトを構文的に不正にさせます。 悪意をもって組み立てられたオブジェクト名によって、スクリプトがリロードする時にSQLインジェクションの危険性があり得ました。(CVE-2012-0868)
バキューム処理と同時に挿入を行った場合のbtreeインデックス破損を修正しました。(Tom Lane)
挿入によって発生するインデックスページ分割によって、同時実行中のVACUUM
が削除すべきインデックス項目を削除し損なうことが時々発生することがありました。
対応するテーブル行が削除された後、対応先が無いインデックス項目によってエラー(「could not read block N in file ...」など)、最悪は、解放されたテーブル位置に再挿入された関係がない行にちなんだ、警告のない間違った問い合わせ結果が引き起こされます。
この不具合は8.2から存在していましたが、あまり頻発に発生しませんでしたので、これまで究明されませんでした。
使用中のデータベースで発生していたのではと疑わしければ、対象のインデックスを再インデックス付けすることで修正されます。
ALTER USER/DATABASE SET
における一部の設定で存在しない値を許可します。 (Heikki Linnakangas)
default_text_search_config
、default_tablespace
、temp_tablespaces
を未知の名前に設定することができます。
これらが実際に使用されている別のデータベースでは既知であるかもしれませんし、またテーブル空間の場合はまだテーブル空間が作成されていないかもしれないからです。
過去search_path
においても同じ問題がありましたが、これらの設定も同様に動作するようにしました。
WAL再生中にOIDカウンタを、たとえ周回していたとしても、正しく追跡します。(Tom Lane)
これまでは、OIDカウンタはシステムが再生モードを抜けるまで高値のままになりました。 実際にはほとんどnilという結果になりますが、マスタに昇格されるスタンバイサーバでは、値が必要になってから、OIDカウンタを合理的な値まで進めるために長時間かかる可能性がありました。
*
が付いた正規表現の後方参照を修正しました。(Tom Lane)
コードでは、正確な文字列一致を強制せずに、実質後方参照シンボルで参照されるパターン副式を満たす任意の文字列を受け付けました。
同様の問題はまだ、直接量指定子のサブジェクトとならない、より大きく量化された式に埋め込まれた後方参照でも残っています。 こちらは将来のリリースのPostgreSQLで対応予定です。
inet
/cidr
値の処理に最近入ったメモリリークを修正しました。(Heikki Linnakangas)
2011年12月のPostgreSQLリリース内のパッチによって、これらの操作にメモリリークが発生しました。 これらの列に対するbtreeインデックス等で重大な問題になる可能性がありました。
Windowsのsysloggerにおけるファイルハンドルの二重クローズを防ぎます。(MauMau)
通常はこのエラーは表面化しませんが、Windowsのデバッグ版を実行している場合は例外が引き起こります。
plpgsqlにおけるI/O変換関連のメモリリークを修正しました。(Andres Freund、Jan Urbanski、Tom Lane)
現在の関数が終わるまで、特定の操作がメモリリークしました。
継承されたテーブル列に対するpg_dumpの取り扱いを改良しました。(Tom Lane)
pg_dumpは、子の列が親の列と異なるデフォルト式を持つという状況を間違って扱いました。
デフォルトがテキストとして親のデフォルトと同一であるが、実際は同一ではない場合(例えば、スキーマ検索パスの違いのため)、異なるものとして認識せず、そのため、ダンプしリストアした後、子は親のデフォルトを継承することができました。
子の列がNOT NULL
であり親がそうではなかった場合も、微妙に間違ってリストアされました。
INSERT形式のテーブルデータに対するpg_restoreの直接データベースにリストアするモードを修正しました。(Tom Lane)
他の問題に対する修正における見落としの結果、2011年9月または12月付けのリリースに含まれるpg_restoreでは、--inserts
または--column-inserts
オプションを付けて作成されたアーカイブファイルを直接データベースにリストアすることができませんでした。
アーカイブファイル自体には失敗はなく、テキストモード出力では問題ありませんでした。
contrib/intarray
のint[] & int[]
演算子のエラーを修正しました。 (Guillaume Lelarge)
2つの入力配列が共通して持つ最小の整数が1であり、どちらかの配列により小さな値があった場合、1が結果から間違って省かれました。
contrib/pgcrypto
のencrypt_iv()
およびdecrypt_iv()
の誤判定を修正しました。(Marko Kreen)
これらの関数は特定の種類の無効入力エラーの通知に失敗し、不正な入力に対してランダムなゴミの値を代わりに返しました。
contrib/test_parser
における1バイトのバッファオーバーランを修正しました。(Paul Guyot)
コードでは必要より1バイト多く読み取ろうとし、境界条件ではクラッシュします。
contrib/test_parser
は単なるサンプルコードであり、これ自体はセキュリティ問題ではありませんが、例のコードとしては良くありません。
ARMにおいて可能ならばスピンロックに__sync_lock_test_and_set()
を使用します。(Martin Pitt)
この関数は、以前の廃止予定でARMv6以降では使用できなくなったSWPB
命令の使用を置き換えるものです。
最近のARMボードでも古いコードは明白な方法で失敗することはありませんが、単に同時アクセスのインターロックを行わず、マルチプロセス操作において奇妙な失敗をもたらすと報告されています。
受け付け可能なバージョンのgccを用いて構築する場合に-fexcess-precision=standard
オプションを使用します。(Andrew Dunstan)
最近のバージョンのgccは独創的な結果を生成するというさまざまなシナリオを防ぎます。
FreeBSDにおいてスレッド化されたPythonを使用できるようにしました。(Chris Rees)
configureスクリプトはこれまで、この組み合わせは動作しないと前提していました。 しかしFreeBSDではこの問題が修正されましたので、エラー検査を取り除きました。