注:このお話は20070303版に関するものです。20070531版以降では問題は修正されているそうです
ちと頭に来たので、全然Tipsではないがメモ。
basp21のメール送信モジュールであるbsmtp.dllに脆弱性が発見されたということで
作者さん*1が修正版のdllと称するものを配布しているのだが、
このdll、旧バージョンのdllと互換性がない。
具体的には以下の関数がエクスポートされなくなっている。(Dependency Walkerで確認)
- BFlushMail
- _BSendMailHook@8
- FlushMail
- SendMailHook
これによって、basp21ファミリーとしてインストールされるbsendm.exeが起動できなくなる。
(単体で起動しようとするとWindowsに
プロシージャ エントリ ポイント _BSendMailHook@8 がダイナミック リンクライブラリ Bsmtp.dll から見つかりませんでした。
と文句を言われる。当然だわな)
……で、実はSendMailEx()関数は内部でbsendm.exeを呼ぶことによって非同期のメール送信を実現しているが
このときのプロセス生成チェックが甘いのか、bsendm.exeの起動に失敗しても一切エラーとはならない。
結果、SendMailEx()は「暗黙に何もしないゴミ関数」に成り果ててしまう。
無論、Baspの同名メソッドも内部でbsmtp.dllのSendMailEx()を呼んでいるので同じ惨状を呈する。
ということでSendMailEx()を使っている人は慌てて差し替えちゃダメです。
あと上を見りゃ分かると思いますがFlashMail()メソッドも使用不可になってます。何なんだか……
つーか、こんないい加減なモノを「セキュリティ対策版ですよ〜」と垂れ流すような人のソフトは
もう使わんほうが良いと思うのですが何か。