[Momonga-devel.ja:02801] [momongaja:00076] bzdiff が動かない


koma2@xxxxxxxxxxxxxxxxx wrote: 

> > bzdiffを実行すると、以下のようなエラーを吐きます。
> > 
> > >-bash-2.05b$ bzdiff a b
> > >/usr/bin/bzdiff: line 1: tempfile: command not found
> > >cannot create a temporary file
> > 
> > 下記URLのパッチで修正できました。
> > http://sources.redhat.com/ml/cygwin-apps/2004-08/msg00233.html
> > 
> > specのパッチを作ってみました。添付します。
> 
> bzdiffができないことを確認して,
> patchを当ててtrunkにcommitしました.

echo /tmp/bz$$ として一時ファイルを作るのはマズイです。
この場合、

(1) /tmp/bz<数字の並び> という名前の symbolic link を大量に作り、
    書き込み権限のないファイル(eg. /etc/shadow) を差すようにする。
(2) root が bzdiff を実行するのを待つ。
(3) root が bzip2 -cdfq "$2" > $tmp を実行したところで
    symbolic link 先のファイルが $2 に置き換えられ、
    破壊される。

という形で、書き込み権限のないファイルを破壊させることができます。

あらかじめファイルが存在するかとか、
ファイルの permission を適切に設定するとかすればいいのですが、
そういった処理は mktemp が全部面倒見てくれるので
mktemp を使うべきです。

そういうわけで、以下のように patch を直して
trunk に commit しました。

--- bzdiff-orig	2003-08-09 02:35:45.000000000 -0400
+++ bzdiff	2004-08-26 15:24:33.263466500 -0400
@@ -37,7 +37,7 @@ if test -z "$FILES"; then
 	echo "Usage: $prog [${comp}_options] file [file]"
 	exit 1
 fi
-tmp=`tempfile -d /tmp -p bz` || {
+tmp=`mktemp /tmp/bzXXXXXXXXXX` || {
       echo 'cannot create a temporary file' >&2
       exit 1
 }


== このレポートの詳細は以下の通りです ==

レポート ID  : 76
レポート URL : http://developer.momonga-linux.org/kagemai/guest.cgi?project=momongaja&action=view_report&id=76

状態       : 確認待ち
処理方法   : 修正済み
バージョン : HEAD
優先度     : 中
重要度     : 普通
担当者     : tab

# あなたが、このようなメッセージに無関係である場合には、
# 管理者 <bugs-admin@xxxxxxxxxxxxxxxxx> までご連絡ください。

--
Bug Tracking System 影舞 0.8.3.
http://www.daifukuya.com/kagemai/