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

[FDclone-users:00977] Re: アーカイブブラウザでSEGV



 しらいです。

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 ----

                                               しらい たかし