ログイン処理のNPE

Hudsonのサインアップに10回のうち9回失敗するので、キャプチャの実装(JCAPTCHA)を変えずにもう少し見やすくできないものか、ここ2日ほど考えている途中にNPEが発生しました。次の手順で再現します。

  1. 画面右上のサインアップを選択
  2. 何も入れずにサインアップボタンを選択。サインアップする。
    • 当然、エラーでサインアップ画面が再表示。URLは"/securityRealm/createAccount"。
  3. 画面右上のログインを選択
    • URLは"/login?from=/hudson/securityRealm/createAccount"。
  4. ユーザー名とパスワードを入れてログインボタンを選択。
    • ここでNPE発生。URLは"/securityRealm/createAccount"。

以下のスタックトレースがログにはかれます。

PWC1406: サーブレット Stapler の Servlet.service() が例外をスローしました
java.lang.NullPointerException
at hudson.security.HudsonPrivateSecurityRealm.createAccount(HudsonPrivateSecurityRealm.java:131)
at hudson.security.HudsonPrivateSecurityRealm.doCreateAccount(HudsonPrivateSecurityRealm.java:86)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:103)
at org.kohsuke.stapler.Function.bindAndinvoke(Function.java:57)
at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:75)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:30)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:409)
(snip)

問題箇所自体はNULLチェックをすれば直るのですが、4.で表示されているURLがcreateAccountというのが気にかかります。詳細は省きますが、3.の"form"の値を取得して、ログイン成功時にもとの画面に戻っているのですが、”createAccount"のようなデータ更新などの副作用があるURLに戻るのは問題かもしれません。

この事象が発生するのは多くはなさそうですが、解決法を思いつきません。もどっていいURLのリストをもつのもどうかと思いますし。