[Kazehakase-devel 663] プロキシ設定で刺さる件

アーカイブの一覧に戻る

Junichiro Kita kita****@kitaj*****
2004年 1月 15日 (木) 01:37:04 JST


きたです.

# ちょっと寝惚けているので,もしかしたら思い込みで書いちゃってるかもし
# れません.その際はご指摘お願いします.

https://sourceforge.jp/tracker/?func=detail&atid=1529&aid=3729&group_id=388

の件を調べていて発見したんですが,kz-profile.c の kz_profile_delete_*
がおかしくありませんか?

KzProfile の list の先頭の要素が削除されるような操作をすると,list が
無効なポインタになってしまうような気がします.

プロキシの設定では,設定変更後に適用や OK を押すと,いったん
kz_proxy (こいつの型は KzProfile)の list を全部削除した後,tree_model
から順にプロキシの設定情報を取り出して登録していきます.
# このロジックはこのロジックでダサいですが…

全部削除するということは,先頭の要素も削除されるということです.

実際に全部削除した直後に kz_proxy->list を確認してみると,NULL ではな
く意味のない整数値(無効な値)になっていました.

このため,その直後の kz_proxy への登録時に kz_proxy->list->next の値に
よって SEGV したり無限に next をたどり続けたりするんではないかと思いま
す.

バータリーに修正するなら添付のパッチのように,kz_profile_list_free の
中で先頭チェックをきちんとやってやれば良いと思いますが,これ,いっその
こと KzProfileList を GList で置き換えちゃった方がよくありませんかね?
自前で双方向リストを実装してるのって何か意図があるんでしょうか?

-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: kz-profile.c.diff
型:         application/octet-stream
サイズ:     1727 バイト
説明:       無し
ダウンロード 


Kazehakase-devel メーリングリストの案内
アーカイブの一覧に戻る