[Namazu-devel-ja 255] Re: Windows 環境で HEAD の mknmzは元ファイルを消してしまいます

Yukio USUDA m6694ha392t @ asahi-net.or.jp
2004年 10月 12日 (火) 23:20:43 JST


臼田です。

Tadamasa Teranishi wrote:

> HEAD の document.pl(_check_content) に致命的なバグがあるようです。
> ファイル名に漢字を使っていない場合、元ファイルを削除してしまいます。
> 
ここは、基本的にmknmz(load_document)から引き抜いて作ったサブルーチンなのですが
$shelter_cfile 自体はファイル名の保護だけの目的のようなので
できれば廃止したかったのでどんどん消していったようです。

どうも $shelter_cfile をやめてここを単純に消した際に
気づかなかったようです。

致命的なミスです、最新の状態でWin32でテストしていなかったので気づきませんでした。

被害があったら申し訳ありません。


修正は
>         ${$self->{'_contentref'}} = util::readfile($cfile);
>         if ($system eq "MSWin32") {
>             unlink $cfile;
>         }
> 
のところを

         ${$self->{'_contentref'}} = util::readfile($cfile);
         if (($system eq "MSWin32") && ($cfile ne $self->{'_orig_filename'})) {
             unlink $cfile;
         }
とするのではどうでしょうか。

入っているものが本物かテンポラリの名前かわかりにくくなるので
本当は$cfileに代入するのを止めたほうがよいですね

臼田幸生




Namazu-devel-ja メーリングリストの案内