[mew-dist 25284] Re: B decode 時のエラー条件緩和

Motohiko Minakuchi zxcv3794 at example.com
2004年 9月 12日 (日) 15:32:21 JST


水口です。

"=" 省略の一般性ですが、私も Norton AntiSpam 以外では **B ENCODING
ERROR** に遭遇した覚えがありません。 こっちを直してもらうのが本筋であ
ることは承知しており、ただいま奮闘中です。

Mew側の対応としては、私はパッチで満足です。


> > やるなら、こうでしょう。

とりあえずかずさんのパッチを試させて頂きました。 CVS の b4-0-68 でも 
head でも快適に動いています。 ありがとうございます。


> > 4 で割った余りが 1 のときは、どうするんでしょうか?
> 
>   それこそエラーのままでいいですよね。

調べましたが、 Norton AntiSpam に関する限りはエラーでいいと思います。

「4 で割った余りが 1」を生成する符号化規則として私が思い付くのは「符号
化文字列末尾の "A" を削除」だけです。 (他にありますかね?)

以下、上記条件に該当する例を試してみた結果です。

元Subject   : "あ@@" (3n + 1 bytes)
Mewの符号化 : =?iso-2022-jp?B?GyRCJCIbKEJAQA==?= (4n + 2 bytes)

変更された Subject : "[Norton AntiSpam] あ@@" (3n + 1 bytes)
Norton AntiSpam による上記の符号化 :
 =?iso-2022-jp?B?W05vcnRvbiBBbnRpU3BhbV0gGyRCJCIbKEJAQA?= (4n + 2 bytes)

以上のとおり、末尾の "A" は削除されません。


仮に末尾の"A"の削除にも対応するならば、下記のケースの救済方法が悩まし
いと思います。 今回のパッチでも、"@"が 1個落ちます。 少くとも実例が発
生するまでは、エラーでいいのでは無いでしょうか。

元Subject : "あ@@@" (3n + 2 bytes)
正しい符号化 : =?iso-2022-jp?B?GyRCJCIbKEJAQEA=?= (4n + 3 bytes)
救済対象     : =?iso-2022-jp?B?GyRCJCIbKEJAQE?= (4n + 2 bytes)


P.S. Base64 デコードの内容確認用の CGI を作りました。 基本的には自分用
の使い棄てツールなので、いろいろ不親切です。m(_r_)m
<http://www.eva.hi-ho.ne.jp/cgi-bin/user/zxcv/decode64.cgi?in=GyRCJCIbKEJAQE>

利用価値があれば、もう少し整えますが。

--
水口 元彦 (みなくち もとひこ)
zxcv3794 at example.com




Mew-dist メーリングリストの案内