[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-devel:15864] lv segfault 解決?



久保田です。

lgrep が segfault する原因が、たぶん分かりました。

# まちがえて debian-devel@org に出してしまいました...

LvGrep() (lv.c) は、FileAttach() を呼び出し、次いで FindSetPattern()
を呼び出します。この FileAttach() は file_t 構造体を初期化しますが、
このとき、used メンバの初期化を行っていません。

そのため、FindSetPattern() (find.c) から FindReset() (find.c) が
呼び出されたとき、if( TRUE == f->used[i] ) が偶然に真になってしまう
ことがあります。そういうときに segfault が起こるようです。

そこで、FileAttach() (file.c) にて、used メンバを FALSE で初期化する
ようにすると、segfault が起きなくなりました。

パッチ済の Debian パッケージを、www.debian.or.jp/~kubota/packages/lv/
に置きました。version 4.49.5f-1 です。

また、ソースへのパッチは上記サイトに置いた lv4495f.diff.gz になります。
これは、upstream tarball である lv4495.tar.gz に対して
lv4495[abcde].diff.gz を順番にあてたものに対するパッチですが、たぶん
lv4495.tar.gz や Debian パッケージに対してもあたると思います。

これで正しいでしょうか?


# lv4495[abcdef].diff.gz を、upstream developer の成田さんに送りました。

---
久保田智広 Tomohiro KUBOTA <kubota@debian.org>
http://www.debian.or.jp/~kubota/