[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[cvs-ml 430] Re: Can't diff command
やっと原因がつかめて直しました。
修正お願いします(笑)>河田さん
--------------------------------------------------------------
原因:
テンポラリファイルを作成する時にcvs_temp_name()を使ってファイル
名を取得してます。
で、この戻り値がポインタなんですが、そのポインタのサイズがわから
ないのに、strcatで文字列を追加してメモリを壊していました。
障害が発生するのはHAVE_TEMPNAMが定義されている場合だけと
思われます。それ以外での条件コンパイルのcvs_temp_name()は
少し余裕を持って領域を確保していますから…。
回避:
cvs_temp_name()でrealloc()してサイズを大きくする。
// リサイズする数字は適当でいいのかも
retval = realloc(retval, 255 - strlen (Tmpdir) - 9);
他の条件コンパイル時も不安なので増やして確保する。
value = xmalloc (strlen (Tmpdir) + 255);
char value[255];
--------------------------------------------------------------
> set -x
> ...とかで細切れにしてやってみてくださいませ。
これってどういう意味でしょうか?
join系のBUGって?
この部分だけのパッチ下さい(笑)
---
森山敏治