[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FDclone-users:00574] Re: ファイル名が表示されない時があるようです、長文失礼。
- Subject: [FDclone-users:00574] Re: ファイル名が表示されない時があるようです、長文失礼。
- From: Takashi SHIRAI <shirai@unixusers.net>
- Date: Thu, 14 Sep 2006 22:50:23 +0900
しらいです。
In Message-Id <20060914213316.354633.52cbf579@isis.ocn.ne.jp>
yuji tamura <yuji@isis.ocn.ne.jp>さんwrites:
> まずファイル名が変なのは確かです。
> 「Amazon.co.jpアソシエイト・プログラム運営規約.webarchive」と言
> う長いファイル名です。この .webarchive と言うのは MacOSX の
> Safari(web ブラウザ)で web ページをまとめて保存する時につく拡
> 張子です。ファイル名は Safari が付けた物です。
このファイルは Cocoa アプリ の Safari が作ったものなんです
よね?ならば UTF-8 で記述されているものと思われます。その場
合、見た目の長さ以上に文字数がある筈です。
上のファイル名の場合、EUC-JP なら 55bytes ですが、UTF-8 だ
と 71bytes ありますし、Mac OS X の UTF-8 だと 74 bytes にな
ります。
とは言え、この程度では buffer overflow しそうにはありませ
んね。
> 関係するかもしれない .fd2rc には、
> -----
> PAGER=lv
> #for MacOSX
> launch ".webarchive" "open %C"
> -----
> と書いてあります。
「open」というのが Safari のコマンド名なんですね?では「%C」
を削除して「open」だけにしてみるとどうなるでしょうか?また、
launch 定義を削除して「PAGER=open」としてみるとどうでしょう?
どこかで buffer overflow が生じているような症状なのですが、
その場合、全然関係のないところで症状が表面化するので、関係な
さそうなところでも片っ端から試してみないといけません。
> ちなみにこのディレクトリ名は
> 「/Users/yuji/Documents/10 blog」と言う名前になっています、空白
> が入っているのがまずいのかとも思ったのですが...、と言うのは、
> 「/Users/yuji」において(これは MacOSX においてのホームディレク
> トリです)、
> -----
> touch Amazon.co.jpアソシエイト・プログラム運営規約.webarchive
> -----
> として、同じファイル名のファイルを作って見ても、上記と同じ症状は
> 出ないからです。
空白文字よりはパス名の長さが関係してそうですね。「yuji」の
直下に例えば「012345678901234567」という名前の directory を
作ってその下に置くと、フルパス名が同じ長さになりますよね。
この状態で再現するかどうか試してみて下さい。
> 何か思い当たる事はありますでしょうか?。
フルパス名の長さが原因で buffer overflow が起こっていると
するならば、そのサイズを予め多めに確保しておくという回避法が
考えられます。
フルパス長は <sys/param.h> というヘッダに MAXPATHLEN とい
うマクロ名で定義されています。このヘッダは func.h から呼ばれ
ていますので、この中で再定義してみましょう。
func.h の最後に以下の記述を追加します。
#undef MAXPATHLEN
#define MAXPATHLEN 65536
もしこれで直るようならば、実際にどの部分の MAXPATHLEN の値
が原因になっているかを確認して下さい。
各 *.c の中で func.h を #include している箇所を探して、上
の記述をその #include の下に記述していきます。func.h は元に
戻しておいて下さい。
*.c を一個ずつ試していって、症状が直ったところで原因となっ
た *.c が特定出来ると思います。今度はそのファイルの中を探し
で MAXPATHLEN を一個ずつ「MAXPATHLEN * 2」に書換えます。
この作業を一個ずつ地道に続けていけば、どこかの MAXPATHLEN
の値が原因になっていることが判ると思います。一番怪しそうなの
は dosemu.c でしょうかね。
もっと直接的な探し方があればいいのですが、Mac OS X 環境が
手元に無いためにこういう遠回りな探し方しか思いつきません。お
手数とは思いますが、頑張って探し出してみて下さい。
しらい たかし