[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FDclone-users:00977] Re: アーカイブブラウザでSEGV
- Subject: [FDclone-users:00977] Re: アーカイブブラウザでSEGV
- From: Takashi SHIRAI <shirai@unixusers.net>
- Date: Sun, 22 Apr 2012 20:04:33 +0900
しらいです。
In Message-Id <op.wc5g65khc4zqer@pc05>
"Hironao Komatsu" <hirkmt@gmail.com>さんwrites:
> 小松です。
> 適当にzipやtar.gzなアーカイブを置き、それを閲覧しようとすると低確率
> でSEGVります。同一のアーカイブに対しても再現したりしなかったりしま
> す。
buffer overflow が実際にどういう結果をもたらすかは状況依存
なので、必ずしも SIGSEGV になるとは限りません。なので発見が
難しいんですよね。
最近はメモリ管理を執拗に監視させる libc が出て来てるので、
そういう環境だと割と発覚し易いのですが、それでも絶対という訳
にはいきません。
ま、突き詰めちゃうと何とかして開発者自身が気をつけろという
精神論になっちゃうんですが、人間そんなに完璧ではありませんか
らね。
> v_fileposが-1になっているのがSEGVの理由らしいです。
filepos は負数になってはならない筈なんですが、チェックが甘
かったようですね。今回改めて一通り確認してみましたが、まだ洩
れがあったらごめんなさん。
> 以下のパッチは、単にSEGVを回避するだけです。
これだと対症療法なんで、多分他のどこかで SIGSEGV しちゃう
んじゃないかと思います。こちらの patch でお試し下さい。
---- Cut Here ----
diff -ur ../old/FD-3.00k/archive.c ./archive.c
--- ../old/FD-3.00k/archive.c Sat Apr 21 00:00:00 2012
+++ ./archive.c Sun Apr 22 19:33:51 2012
@@ -969,8 +969,7 @@
poparchdupl();
return(-1);
}
- maxfile = 0;
- filepos = -1;
+ maxfile = filepos = 0;
return(1);
}
---- Cut Here ----
しらい たかし