蝉は、やがて死ぬる午後に気づいた。ああ、私たち、もっと仕合せになってよかったのだ。:2007年02月27日分

2007/02/27(Tue)

NetBSD

多分はてな経由で 不正なUTF-8文字列の話。
要するに RFC3629の10. Security Considerationsの話ですな。

嫌な予感がしたのでNetBSD iconvでちゃんとEILSEQを返すかのテスト。

○ GNU libiconv-1.10
○ glibc-2.5 iconv
○ Solaris8 iconv
× NetBSD 4.99.12 iconv

古い実装だしな、直すか。

同様にサロゲート"\xed\xa0\80"(0xd800)~"\xed\xbf\xbf(0xdfff)がEILSEQになるかのテスト。

× GNU libiconv-1.10
× glibc-2.5 iconv
○ Solaris8 iconv
× NetBSD 4.99.12 iconv

ふーん。

つーわけでNetBSD用のpatch。
patch-citrus_utf8.c
patch-unicode.h
もうちょいテストしてcommitするべし。

まあ ISO-IR-165で書いたように、変換前にチェックをすることこそが危険なんだけどね。
他にも(昨日書いたけど)CNS11643の8面に basic latinがあったりするし。

ちょと話はズレるけど

エスケープ漏れといえば、某商用O-R mapping実装がIBM DB2のSQL方言(LIKEに全角_%が使える)に
対応してなくて(以下略)というのがあったなそういや、多分まだ直ってないんだろうな。