Uploaded image for project: 'Kvasir/Sora'
  1. Kvasir/Sora
  2. KVASIR-177

存在しない静的コンテンツを指定すると内部的にArrayIndexOfBoundsExceptionが発生し、白紙ページが出力される

XMLWordPrintable

    • Type: Icon: Bug Bug
    • Resolution: Fixed
    • Priority: Icon: Minor Minor
    • 3.0.0-RC1
    • Affects Version/s: 3.0.0-EA4-SNAPSHOT
    • None
    • Environment:
      PLUST-0.0.4で生成した新規サイト。変更なし

      (このエントリはKVASIR-39を作成しなおしたもの。)

      存在しない静的なリソースを指定すると、内部的にはエラーページを出力しようとするが、
      その途中にあるdomainURLを取得するロジックでArrayIndexOfBoundsExceptionが発生する。

      具体的には、ServletUtils#getDomainURL()の418行目。
      たとえば、存在しないリソースhttp://localhost:8080/toybox/sample.jpgをブラウザから入力すると、
      入ってくる変数は
      uri: /toybox/templates/exceptions/PageNotFoundRuntimeException
      url: http://localhost:8080/toybox/sample.jpg
      となり、uriの方が長くなる。

      スタックトレースは下記の通り。

      2007-01-28 18:38:33,025 ERROR http-8080-Processor23 [StandardPageExceptionHandler] - ...and tried to handle this exception, but couldn't forward to: /templates/exceptions/PageNotFoundRuntimeException
      java.lang.StringIndexOutOfBoundsException: String index out of range: -18
      at java.lang.String.substring(Unknown Source)
      at org.seasar.kvasir.webapp.util.ServletUtils.getDomainURL(ServletUtils.java:418)
      at org.seasar.kvasir.cms.impl.CmsPluginImpl.determineHeimId(CmsPluginImpl.java:310)
      at org.seasar.kvasir.cms.filter.impl.PageRequestFilter.doFilter(PageRequestFilter.java:128)
      at org.seasar.kvasir.webapp.filter.impl.FilteredRequestFilter.doFilter(FilteredRequestFilter.java:51)
      at org.seasar.kvasir.webapp.chain.impl.RequestFilterChainImpl.doFilter(RequestFilterChainImpl.java:31)
      at org.seasar.kvasir.webapp.servlet.KvasirFilter.processChain(KvasirFilter.java:222)
      at org.seasar.kvasir.webapp.servlet.KvasirFilter.doFilter(KvasirFilter.java:157)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
      at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:704)
      at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:474)
      at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:409)
      at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
      at org.seasar.kvasir.cms.handler.impl.StandardPageExceptionHandler.doHandle(StandardPageExceptionHandler.java:102)
      at org.seasar.kvasir.cms.handler.impl.FilteredPageExceptionHandler.doHandle(FilteredPageExceptionHandler.java:49)
      at org.seasar.kvasir.cms.handler.impl.PageExceptionHandlerChainImpl.doHandle(PageExceptionHandlerChainImpl.java:33)
      at org.seasar.kvasir.cms.handler.impl.GardRootChangePageExceptionHandler.doHandle(GardRootChangePageExceptionHandler.java:30)
      at org.seasar.kvasir.cms.handler.impl.PageExceptionHandlerChainImpl.doHandle(PageExceptionHandlerChainImpl.java:33)
      at org.seasar.kvasir.cms.filter.impl.PageRequestFilter.processExceptionHandlerChain(PageRequestFilter.java:231)
      at org.seasar.kvasir.cms.filter.impl.PageRequestFilter.doFilter(PageRequestFilter.java:176)
      ...

            Assignee:
            skirnir skirnir
            Reporter:
            tsuboi tsuboi
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: