2008年4月22日の投稿

2008-04-22

WP 附属の class-pop3.php は APOP 対応めちゃくちゃ

ゆりこ による 09:48:28 の投稿
カテゴリー: WordPressハック
タグ: , ,

鋭意製作中のメール投稿プラグインですが、POP3 対応は WordPress 附属の class-pop3.php をインクルードする予定でした。しかし、APOP 対応がバグっていることが判明してしまいました。

それは、サーバー接続時にチャレンジ文字列を解釈する部分で、 parse_banner()if(!empty($digit)) という部分があるのです。これだと、数字の 0 を読み飛ばしてしまいます。これにより、チャレンジ文字列が変化してしまって、認証に通りません!! たぶん、脆弱性対策でヌル文字をスキップするつもりなのでしょうが、このコードを入れた人は、チャレンジ文字列に 0 が入らないサーバーを使っていたのでしょう……。

あと、apop() メソッドは、エラーが発生すると通常認証を試しますが、ここでエラーが出ると APOP 時のエラーメッセージを上書きしてしまいます。仕方ないので、エラーメッセージを「追加」するように修正しました。結局、WP の class-pop3.php は使いものにならないので、修正したものを「添付」することになりそうです。

ともあれ、POP3 対応もそれなりに動いたので、近いうちにリリースできそうです。ただし、動作確認が不十分なので、ベータ版レベルですが。

[追記] チケット#5915 が切られていました。WordPress 2.3.3 でエンバグしたようで、未だ修正されていないようです。提案されている修正案は正規表現を使っていますが、これは RFC1939 に合致するのかな?? (チャレンジ文字列は Message-ID と同じ書式らしいので、ドットが複数あってもいいような)