2ch特化型サーバ構築作戦 Part2

このエントリーをはてなブックマークに追加
754鳥屋™ ◆No1111111k
巣をつきとめられちゃったのでコテハン晒します。

今回の問題(?)は
・従来の bbs.cgi が、範囲外の値を crypt(3) の Salt に与えていたこと。
 これはたまたまそれなりの動きをしていて、副作用として
 実装によって出力の相違が見られる(いわゆる新鯖トリップ問題)と。
・今回選んだ実装(FreeBSD 4.8R?)では、crypt(3)は律儀にエラーチェック
 してて、範囲外のSaltを与えた際に空文字列(CレベルではNULL?)を
 返してしまうこと。
・上の問題に対処するために入れたSalt補正
 (たぶん s/\W/./g )が、依然 _ (0x5F; アンダースコア)を素通りさせて
 しまうこと。(ちなみに上の式では、アンダースコアを素通りさせず、
 . ピリオドに変換してしまうことがあります。それはなぜなのかは、
 らくだ本とにらめっこして考えましょう)
こんな感じでまとめてしまえると思いますがいかが?

希望としては、全2ch鯖でトリップの算出を統一化してほしいと
願うところなのですが、さしあたって今回の鯖で、統一トリップの
叩き台をつくってほしかったりします。ちうかキボンヌ

さしあたって↓こんなの。
$salt = substr($key."H.", (length($key) >= 11 ? 9 : 1), 2);
$salt =~ s![^./0-9A-Za-z]!.!g;

「いわゆる新鯖仕様トリップ用Salt算出式」を所望でしたら
某スレの前スレの最後あたりを探してみてください。
Cで起こりうる症状をPerlでなぞっているだけなので、少々非効率ですが。