PostgreSQL 7.1.3 パッチについて 石井達夫 このディレクトリには PostgreSQL 7.1.3 (http://www.postgresql.org/) のパッ チが格納されています.インターネット上では, ftp://ftp.sra.co.jp/pub/cmd/postgres/7.1.3/patches/ から入手できます. ********* 方法1: 個々のパッチを当てる 自分で必要なパッチを当てるのが「通」なのですが:-),全部のパッチを当て るための shell script "PATCH" が用意されていますので,とにかく全部パッ チを当てたい,という方はご利用下さい. postgresql-7.1.3 のソースを展開し,そこ(postgresql-7.1.3 ディレクトリの 一つ上,すなわち postgresql-7.1.3 が見えている状態)で,以下を実行します. % sh /foo/bar/PATCH もちろん /foo/bar は PATCH のあるフルパスに置き換えて下さい. *注意* 1. PATCH スクリプトは,PATCH とパッチファイルが同じディレクトリ内にあ ることを前提としています. 2. Solaris 付属の patch コマンドは使えません.GNU patch を入手して下さい. ********* 方法2: パッチを1個にまとめた "jumbo.patch" を適用する 方法1が面倒な人は,個々のパッチを1つにまとめた "jumbo.patch" を適用す ることができます.ソースディレクトリ(postgresql-7.1.3/)があるところで, gunzip -c jumbo.patch.gz|patch -p0 として下さい.もしくは, cd postgresql-7.1.3 gunzip -c jumbo.patch.gz|patch -p1 です.jumbo.patch.gz は jumbo-日付.patch.gz にリンクしており,常に最新 のパッチを指すようになっています. 取得したファイルの内容が壊れていないかどうかは jumbo.pach.gz.md5 の中 に書かれている md5 チェックサムの値で分かります.FreeBSD なら md5, Linux なら md5sum コマンドで確認できます.ファイルサイズが合っているに も関わらず,ダウンロードしたファイルをうまく展開できない場合は,チェッ クサム (= の右側の暗号のような文字列)が一致するかどうか確認して下さい. 一致していなければファイルが壊れています.お使いのブラウザの設定などを 確認して下さい.(何件か Internet Explorer を使ってダウンロードした際の 障害が報告されています) ********* 方法3: パッチが適用済のソース一式を持って行く 方法2すら面倒な人はパッチが適用済のソースを持って行って下さい.ファイル名は postgresql-7.1.3-patched.tar.gz です.postgresql-7.1.3-patched.tar.gz は postgresql-7.1.3-patched-日付. tar.gz にリンクしており,常に最新のファイルを指すようになっています. 取得したファイルの内容が壊れていないかどうかは postgresql-7.1.3.patched.tar.gz.md5 の中に書かれている md5 チェックサ ムの値で分かります.FreeBSD なら md5, Linux なら md5sum コマンドで確認 できます.ファイルサイズが合っているにも関わらず,ダウンロードしたファ イルをうまく展開できない場合は,チェックサム (= の右側の暗号のような文 字列)が一致するかどうか確認して下さい.一致していなければファイルが壊 れています.お使いのブラウザの設定などを確認して下さい.(何件か Internet Explorer を使ってダウンロードした際の障害が報告されています) ------------------------------------------------------------------------ 改定履歴: 2002/05/01: ascii.patch.gz を追加 2001/12/05: update.patch.gz を追加 2001/09/14: 本ファイル新規作成, deadlock.patch.gz を追加. ------------------------------------------------------------------------ 個々のパッチの説明です. 1. deadlock.patch.gz デッドロックが発生したあとロックが解放されないバグを修正.本家のTom Laneが作成.障害の再現方法などについてはdeadlock.txt参照. 2. update.patch.gz ある種のupdateあるいはruleが設定されているテーブルにupdateを行うと, バックエンドがクラッシュすることがあるバグを修正.本家のTom Laneが 作成.障害の再現方法などについてはupdate1.txt参照. 3. ascii.patch.gz データベースエンコーディングとクライアントエンコーディングが異ると きにPostgreSQLはエンコーディングの自動変換を行いますが,変換が不能 の場合には「(16進数)」の形に置き換えます.このとき,バグのために変 換不能の該当文字だけでなく,直後の1バイトを変換不能文字と見なして変 換してしまいます.その結果,たとえば変換不能文字の直後の\'(バックス ラッシュ+シングルクォート)を単独の'(シングルクォート)に変換してしま い,任意のSQL文を実行可能にするセキュリティホールが生じる可能性があ ります.なお,この問題はデータベースエンコーディングがSQL_ASCIIのと きにのみ発生します. ------------------------------------------------------------------------ このパッチに関する質問などは pgsql-jp ML でお願いします. また http://www.sra.co.jp/people/t-ishii/PostgreSQL/ でも情報が提供されてい ます.