RubyでCGIスクリプトを作る下準備・cryptを使う・改

前回(http://d.hatena.ne.jp/BeForU/20040704)のバグフィックス
checkpwdの引数が空だとエラーになるので対策。(一応nilの時も考慮)

def checkpwd(chk, pwd)
  # ↓この行だけ追加
  return false if chk == nil || chk == "" || pwd == nil || pwd == ""

  if pwd =~ /^\$[0-9]\$([A-Za-z0-9\.\/]+)\$([A-Za-z0-9\.\/]+)$/ # MD5
    salt = $1
  else
    pwd =~ /^([A-Za-z0-9\.\/]{2})/ # MD5以外は一般的なDESとしてみる
    salt = $1
  end

  if pwd == chk.crypt(salt)
    return true
  else
    return false
  end
end