Namazu-devel-ja(旧)


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

Re: Subject field search bug when NULL characteris contained



寺西です。

TSUCHIYA Masatoshi wrote:
> 
> >nkf 2.02 でこの結果になるのが問題のように思いますので、nkf 側での対処
> >も必要なのではないかと思います。何せ null 文字を作りだしてしまうので
> >すから。
> 
> と言いきってしまって良いかどうかは,多少の疑問があります.問題を再現す

$ od -t xCa test.txt
0000000 53 75 62 6a 65 63 74 3a 20 5b 4d 65 77 2d 64 69
          S   u   b   j   e   c   t   :  sp   [   M   e   w   -   d   i
0000020 73 74 20 31 31 31 38 32 5d 20 52 65 28 32 29 3a
          s   t  sp   1   1   1   8   2   ]  sp   R   e   (   2   )   :
0000040 20 2b 42 61 63 6b 75 70 20 20 20 20 20 20 20 20
         sp   +   B   a   c   k   u   p  sp  sp  sp  sp  sp  sp  sp  sp
0000060 20 20 20 20 20 20 20 20 28 68 1b 2e 41 1b 4e 69
         sp  sp  sp  sp  sp  sp  sp  sp   (   h esc   .   A esc   N   i
0000100 20 68 1b 4e 69 20 68 1b 4e 69 2e 2e 2e 29 0a
         sp   h esc   N   i  sp   h esc   N   i   .   .   .   )  nl
0000117

少なくともこの文字列は(たぶん)ISO-2022-JP-2 の文字列で、でたらめな
制御文字が入っているというわけではありません。

nkf が ISO-2022-JP に対応していないにしろ、nkf を通したことで、
(たぶん)でたらめな変換をして、途中に nul 文字を生成するのは
バグといえるでしょう。
# 対応していないのなら、少なくともそのまま出さないとね。

何にしてもテキストのフィルタを通したら nul 文字が途中に入るのは
ダメでしょ。(元データに入っているならともかく)

> 個人的には,この nkf の挙動がバグであると言いきることは難しいと思いま
> す.この挙動がバグであると言うためには,この入力に対する nkf の『正し
> い出力』が定義できることが必要です[*].しかし,ここでの入力は,文字コー
> ドとしては不完全な byte 列ですから,『正しい出力』が定義できるようには
> 思えません.

まぁバグだと思いますが、百歩譲って仮に仕様だとした場合、
想定外のデータを入力させるのが悪いってことになります。
すると Namazu でも想定外のデータを入力するのが悪いって論理に
なるので、

> ですから,namazu(mknmz) としては,nkf が NULL 文字や制御文字を含む文字
> 列を返したとしても,それなりに動くように設計しておくべきだと思います.

なんてことは言えないですよね。(すくなくとも'べき'とは言えなく
なります。)

想定外のデータ(nul 文字や改行を途中に含む)を入力した場合の対処に
ついては既にパッチを作っているので、それを使えば NKF 2.X の問題も
解決しまうのだが、問題は nkf 2.X でデタラメな変換を行うことの方です。

nkf 2.X の挙動が不明な以上、それをそのまま使い続けるのは危険です。

> >で、nkf が修正されれば本件の問題は解決するでしょう。通常のメールであ
> >れば、これで問題が起こることはないでしょう。
> 
> nkf が修正される(できる)かどうかは,個人的には疑問です.

そうかな?

# 簡単に直るかどうかは別の話だけど。

nkf が直らないなら、nkf を捨てるという選択肢もあるわけで、挙動不振の
nkf 2.X を使わなければならない理由はないでしょう。

完全に置き換えはできませんが、iconv で代用するのでも良いでしょう。
(不足する機能は追加しないといけませんけどね。)
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns@xxxxxxxxxxxxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E