リリース日: 2005-05-09
このリリースは、複数のセキュリティ関連の問題を含む、8.0.2の各種不具合を修正したものです。
8.0.Xからの移行ではダンプ/リストアは不要です。 しかし、8.0.xのシステムカタログで見つかった2つの重大なセキュリティ問題を突かれる可能性があります。 ダンプ、8.0.3のinitdbを使用したinitdb、リロードを行うことで、自動的にこれらの問題を修正します。
より重大なセキュリティ問題は、組み込みの文字セット符号化変換関数により、権限を持たないユーザがSQLコマンドを呼び出すことができるという点です。 このような用途のためにこれらの関数を設計していませんでしたが、悪意のある引数の設定に対する安全性がありませんでした。 この修正により、これらの関数の宣言されたパラメータリストがSQLコマンドから呼び出されないように変更されました。 (通常の符号化変換機構の使用には影響はありません。)
もうひとつの問題は、contrib/tsearch2モジュールが、internal型の引数を取らない場合に間違ってinternalを返すものと宣言された関数を複数作成することです。 これによりinternal型の引数を使用するすべての関数について、型の安全性が損なわれます。
initdb、もしくは、後述の手作業による修正手順に従って、すべてのインストレーションにおいてこれらのエラーを修正することを強く勧めます。 これらのエラーにより、少なくとも、権限を持たないデータベースユーザがサーバプロセスをクラッシュさせることができます。 また、権限を持たないユーザがデータベーススーパーユーザ権限を手に入れることができる可能性もあります。
initdbを行いたくないのであれば、7.4.8リリースノートで示した手作業による修正手順を行ってください。
誤使用を防ぐために符号化関数のシグネチャを変更しました。
INTERNAL結果の関数の危険な使用を防止するように、contrib/tsearch2を変更しました。
間違った第2パラメータからrecord_out
を保護しました。
ある目的(例えばSELECT FOR UPDATE)用にコミットされるように見えるトランザクションが直後に別の目的用にコミットされるという従来から存在した競合状況を修正しました。
一貫性が明らかにないデータが短期間アプリケーションから参照できてしまうため、これはきわめて重大な不具合です。
リレーションの拡張とVACUUMとの間の競合状態を修正しました。
理論上、これにより新たに挿入されたページの価値が失われます。 しかしこうした状況が発生する頻度はきわめてまれで、アサートエラー以外に発生した事例はありません。
TIME WITH TIME ZONE型の値の比較を修正しました。
--enable-integer-datetimes設定スイッチが使用されている場合、この比較コードに間違いがありました。 注意: この修正により列値のソート順が正しくなるように変更されましたので、TIME WITH TIME ZONE型の列に対するインデックスを持つ場合、この更新をインストールした後にREINDEXを行う必要があります。
TIME WITH TIME ZONE型の値に対するEXTRACT(EPOCH)
を修正しました。
INTERVAL型の値の秒の小数部分において、負の値が間違って表示される点を修正しました。
このエラーは、--enable-integer-datetimes設定スイッチが使用された場合にのみ発生します。
%を名前含むトリガを正しくダンプできるようにpg_dumpを修正しました。
contrib/intaggに対する更なる64ビット向けの修正を行いました。
RECORD型を返す関数の最適化の間違いを修正しました。
COALESCE(NULL,NULL)でのクラッシュを防止しました。
libpq用のBorland向けmakefileを修正しました。
timetz型に対するcontrib/btree_gistを修正しました。(Teodor)
プロセスがまだ稼動しているかどうかを確認するために、pg_ctlでpostmaster.pid内のPIDがあるかどうかを検査するようにしました。
ダンプのタイムスタンプ追加により起こるpg_dump/pg_restoreの問題を修正しました。
保持可能なカーソルの実現とトランザクションコミット時の遅延されたトリガの発行との間の相互作用を修正しました。
参照渡しのデータ型を返すSQL関数におけるメモリリークを修正しました。