PostgreSQL 7.0.3 パッチについて 石井達夫 このディレクトリには PostgreSQL 7.0.3 (http://www.postgresql.org/) のパッ チが格納されています.インターネット上では, ftp://ftp.sra.co.jp/pub/cmd/postgres/7.0.3/patches/ から入手できます. ********* 方法1: 個々のパッチを当てる 自分で必要なパッチを当てるのが「通」なのですが:-),全部のパッチを当て るための shell script "PATCH" が用意されていますので,とにかく全部パッ チを当てたい,という方はご利用下さい. postgresql-7.0.3 のソースを展開し,そこ(postgresql-7.0.3 ディレクトリの 一つ上,すなわち postgresql-7.0.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.0.3/)があるところで, gunzip -c jumbo.patch.gz|patch -p0 として下さい.もしくは, cd postgresql-7.0.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.0.3-patched.tar.gz です.postgresql-7.0.3-patched.tar.gz は postgresql-7.0.3-patched-日付. tar.gz にリンクしており,常に最新のファイルを指すようになっています. 取得したファイルの内容が壊れていないかどうかは postgresql-7.0.3.patched.tar.gz.md5 の中に書かれている md5 チェックサ ムの値で分かります.FreeBSD なら md5, Linux なら md5sum コマンドで確認 できます.ファイルサイズが合っているにも関わらず,ダウンロードしたファ イルをうまく展開できない場合は,チェックサム (= の右側の暗号のような文 字列)が一致するかどうか確認して下さい.一致していなければファイルが壊 れています.お使いのブラウザの設定などを確認して下さい.(何件か Internet Explorer を使ってダウンロードした際の障害が報告されています) ------------------------------------------------------------------------ 改定履歴: 2001/05/28: pqfinish.patch.gzを追加 2001/03/18: crypt.patch.gz, numeric.patch.gzを追加 2001/01/18: copy.patch.gz,database.patch.gz,index.patch.gzを追加 2000/12/04: 11/27バージョンはパッチ作成をミスっていたようなので 作り直しました.11/27バージョンは破棄してください. 2000/11/27: pgaccess.patch.gz, identifier.patch.gzを追加 2000/11/17: 本ファイル新規作成, libpq.patch.gz, euc_tw.patch.gz を追加 ------------------------------------------------------------------------ 個々のパッチの説明です. 1. libpq.patch.gz 環境変数 PGCLIENTENCODIONG がpsqlなどのフロントエンドで認識されない バグを修正.この問題は 7.0 から始まっています(6.5.3以前はOK). なお,このパッチは 7.0, 7.0.2 にも当てることができます. 石井が作成. 2. euc_tw.patch.gz EUC_TW, BIG5 のサポートに関するバグを修正.石井が作成. 3. pgaccess.patch.gz pgaccess のテーブルブラウザで,kinput2を使って日本語入力を可能にする パッチ.日本語用のラベル,メニューも付属.Database->preferences から japaneseを選択してください.石井が作成. 4. identifier.patch.gz 長すぎるテーブル名,シーケンス名,カラム名は31バイトに縮められるが, そのときにマルチバイト文字を考慮していないバグを修正.石井が作成. [pgsql-jp 16436]参照. 5. copy.patch.gz マルチバイト文字として正しくないデータ(octal入力などで発生)をcopy from stdinが途中で止まってしまうなどのバグを修正.石井が作成. [pgsql-jp 19316]参照. 6. database.patch.gz 多数のDBを管理している際に発生するバグの修正.本家の Tom Lane作成. db1.txt, db2.txt 参照. 7. index.patch.gz インデックスにデータを挿入する際に,バックエンドが落ちることがある バグを修正.本家の Tom Lane作成.index.txt 参照. 8. crypt.patch.gz crypt authenticationのメモリーリークの修正.本家の Tom Lane作成. crypt.txt参照. 9. numeric.patch.gz numeric計算のバグ.本家の Tom Lane作成.numeric.txt参照. 10. pqfinish.patch.gz libpqを使ってコネクションが確立しない状態でPQfinishするとPQfinishか ら帰ってこないことがあるバグを修正.[pgsql-jp 21542]参照. 11. conv.c-7.0.3.patch.gz データベースエンコーディングとクライアントエンコーディングが異ると きにPostgreSQLはエンコーディングの自動変換を行いますが,変換が不能 の場合には「(16進数)」の形に置き換えます.このとき,バグのために変 換不能の該当文字だけでなく,直後の1バイトを変換不能文字と見なして変 換してしまいます.その結果,たとえば変換不能文字の直後の\'(バックス ラッシュ+シングルクォート)を単独の'(シングルクォート)に変換してしま い,任意のSQL文を実行可能にするセキュリティホールが生じる可能性があ ります.なお,この問題はデータベースエンコーディングがSQL_ASCIIのと きにのみ発生します. ------------------------------------------------------------------------ このパッチに関する質問などは pgsql-jp ML でお願いします. また,http://www.sra.co.jp/people/t-ishii/PostgreSQL/ でも情報が提供さ れています.