In message <_A97@freyasx.ML_> on 04/07/07(16:10:06) you Hiroshi Suzuki <pj4yabth4-jmfhzlzmqqdw.ml@delegate.org> wrote: |鈴木です。 | |こんにちは。 こんばんは。 |早速ですが、 |以下のようにしてインデックスを作ろうとしたときに、 | |#!/bin/sh |export FSXHOME=/home/user/freyasx |export PATH="$FSXHOME/bin:$PATH" |cd /home/user | |any2fdif -c.pdf '-exec pdftotext -enc EUC-JP ^^i ^^o' \ ... |このような、以前 DeleGate-ML で修正していただいたのと |似た様なメッセージが表示されてしまいます。 | |--ccxD[3710] 8639 lncc=5 |+++ 9.23 0.03 110 /home/user/public_html/linux/docs/Manual.htm |+++ 9.57 0.34 111 /home/user/public_html/linux/docs/coding_guide.pdf |## [3710] VStr overflow in Xstrcpy (9.6.0-pre8:any2fdif.c:1976) 1212917464/0/1024 833A220-BFE7FF48-833A61F pointer out of range ""[833A220] ふむふむ、文字列バッファへのポインタが、まるきりその領域外を指してるので、 strcpy()を停止してますね。調べてみると、最初の版からそうでした。 On 10/25/05(23:51) I wrote in <_A72@freyasx.ML_> | -c.ext "converter -i ^^i -o ^^o" | |のようにして、any2fdif から入力ファイル "^^i" と出力ファイル "^^o" を |コマンドに渡せるようにしてみました。また、変換コマンドは system("command") ... |*** ../delegate9.0.5-pre7/fsx/any2fdif.c Sat Oct 8 22:09:44 2005 |--- fsx/any2fdif.c Tue Oct 25 22:59:17 2005 |+ FILE *namedtmpfile(FILE *ofp,PVStr(path),PCStr(name),PCStr(mode)){ |+ FILE *fp; |+ refQStr(dp,path); |+ CStr(tpath,1024); |+ CStr(xpath,1024); この dp です。xpath へのポインタなのですが、まちがって path へのポインタと 定義しています。9.0.5-pre7 でのことでした。 もちろん、最初はこれでも動いてたわけですが、9.0.6 で、バッファの オーバーフローだけでなく、アドレスの下側への逸脱もチェックするように なったため、この問題が生じたことになります。 同封のパッチのように修正します。 9 9 ┌─┐┬┌──┬┐ //\^^ ( ~ ); {Do the more with the less -- B. Fuller} ├─┤│└─┐│ / 877m\_< >_ <URL:http://www.delegate.org/delegate/> ┴ └┴──┘┴────────────────────────────── 佐藤豊@情報技術研究部門.産業技術総合研究所(独立行政法人) *** ../dist/src/delegate9.6.0-pre9/fsx/any2fdif.c Thu Feb 15 19:55:52 2007 --- fsx/any2fdif.c Sat Apr 7 20:09:04 2007 *************** *** 1950,1958 **** } FILE *namedtmpfile(FILE *ofp,PVStr(path),PCStr(name),PCStr(mode)){ FILE *fp; - refQStr(dp,path); CStr(tpath,1024); CStr(xpath,1024); const char *cpath = 0; int fi; --- 1950,1958 ---- } FILE *namedtmpfile(FILE *ofp,PVStr(path),PCStr(name),PCStr(mode)){ FILE *fp; CStr(tpath,1024); CStr(xpath,1024); + refQStr(dp,xpath); const char *cpath = 0; int fi;