Namazu-devel-ja(旧)


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

Re: 1行文字列出力部分の修正について



寺西です。

Yukio USUDA wrote:
> 
> > 通常はありえないので、後ろにゴミを追加して何らかの攻撃(?) をしている
> > とも考えられますので、ばっさり削除した方が良いでしょうということ
> > です。
> > # その攻撃(?)がどんな危険性があるのかとかは、あまり考えていません。
> NMZ.field.subjectがシェルに渡されることはないでしょうから
> ゴミが入っていても表示が崩れるぐらいですむのではないでしょうか?

表示が崩れるのを攻撃とみるかどうかってことです。

nil 文字が途中に入ることは通常ありませんから、nil 文字が途中に
入っているということは、すでにそのデータは異常データです。

nil 文字までの文字列が正常な文字列という保障もないわけですが、
ここは正常な文字列である可能性は他よりも高いと思います。
しかし、nil 文字以降はゴミである可能性が高くなります。

有効な文字列の途中にゴミの nil が入ったのか、有効な文字列の
後にゴミが入ったのかは判断が付きませんから、nil までを
有効な文字列とみなしたということです。
(改行もしかり)

# これが正解だとはいいませんが、妥当なところではないでしょうか。

いっそ、全部捨てるというのもアリですけどね。
 
> > そもそも、mailnews.pl は複数行にまたがる Subject: には対応して
> > いないですしね。途中でぶった切ることに抵抗はないでしょう。
> 長すぎるSubject:はnamazuも途中までしか表示していないようですが、
> Subjectも検索対象になるでしょうからむやみに捨てるものではないと
> 思います。

nil 文字が途中に入るのは異常データですから、むやみに捨てている
わけではありません。

異常データに対して、期待した検索が仮にできないとしても、それは
やむ得ないところでしょう。

それはそうと、長い Subject: に対応していないのは、ただ単に対応
していないだけなので、mailnews.pl を修正して対応することは可能
です。
 
> *uriの文字コードについて
...
> いわゆるJISのマルチバイト文字領域にも制御コードに当たるものはな
> かったと思います。
> ESCシーケンスに用いられる0x1bを消さないようにすればJISでも壊れない
> のでは。(私も詳しくはないので違っていたらご指摘ください)

かもしれませんが、以下の話があるので、こっちについてあまり
話をしても仕方なくなったかもしれません。
私が eucJP に統一していないので... という辺りの話は忘れて
いただいて結構です。問題は eucJP に統一していないことでは
ありませんでした。

> > 早々に eucJP に統一したいものです。)
> http://search.namazu.org/namazu-devel-ja/03389
> の時の話は私が横にそらしてしまったようでちょっと
> 気になっているのでもう一度議論しないといけないですね。

ま、とりあえず eucJP にして、その次の段階でインデックスを全部 
UTF-8 化するのが良いとは思います。
内部処理を UTF-8 化するのはそのまた先かになるのかな。

> > が、ファイル名に制御文字を入れている場合は、漢字コードに関係なく
> > 制御文字が出てくるので、やっぱり削除するわけにはいかないかも
> > しれませんね。むむむ。
> ファイル名に制御コードも使えるのならば確かに漢字コードは関係ない
> ですね。
> 使えるとしても使ってよいものとは思えませんし、Subjectに含まれてい
> る場合よりこっちのほうが危険な気がします。

ファイルネームに使える以上、むやみに削りもできないかなというところ
です。ただ、それ以前にいろいろと処理で不都合がでないとは思えない
のですが、とりあえずそのままが良いかなという程度の話です。
# 実は深く考えていません。

なお、パッチについては、uri であっても nil 文字と 改行文字の処理
は加えています。これはインデックスのファイルフォーマット上の制限
のためです。
ファイルネームに nil はともかく、改行文字を含めることはできるので
すが、インデックスのフォーマット上、それを許すことができないため
です。
nil を "\000" や 改行文字を "\n" のように "\" でエスケープする
エンコードという手もあるわけですが、そうすると使うところでデコード
する必要がでてきて大変そうなので、今回はばっさり削除しました。
フォーマットが変わったともみなせますから、これらは新しい
インデックスのフォーマットを考える場合に考慮すべきなのかも
しれません。

と、既に nil 文字と 改行文字の処理をしているのなら、uri で制御文字
を削除せずそのままにした方が良いというのは、なんだか矛盾するよう
気がしますね。
異常なファイル名のものをリンクで開けなくても、それは仕方ないと
いえますし、ここは uri でも削除する方がよろしいかな。
-- 
=====================================================================
寺西 忠勝(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