Uploaded image for project: 'PUBLIC - Liferay Portal Community Edition'
  1. PUBLIC - Liferay Portal Community Edition
  2. LPS-149663

StringUtil.upperCaseFirstLetter can cause ArrayIndexOutOfBoundsException

Details

    Description

      Open scripting console:

      try {
      out.println("'" + com.liferay.portal.kernel.util.StringUtil.upperCaseFirstLetter("") + "'");
      }
      catch(Throwable t) {
      t.printStackTrace(out);
      } 
      

      Run the script.

      Expected result

      ''
      

      Actual result, stacktrace.

      java.lang.ArrayIndexOutOfBoundsException: 0
      	at com.liferay.portal.kernel.util.StringUtil.upperCaseFirstLetter(StringUtil.java:4659)
      	at com.liferay.portal.kernel.util.StringUtil$upperCaseFirstLetter.call(Unknown Source)
      	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
      ...
      

      Real-world stacktrace with Liferay DXP 7.3 fp2

      2022-03-18 11:17:25.102 ERROR [http-nio-10080-exec-11][render_portlet_jsp:131] null
      java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
              at com.liferay.portal.kernel.util.StringUtil.upperCaseFirstLetter(StringUtil.java:4659)
              at com.liferay.dynamic.data.mapping.internal.util.DDMIndexerImpl.getValueFieldName(DDMIndexerImpl.java:436)
              at com.liferay.dynamic.data.mapping.internal.util.DDMIndexerImpl.createDDMStructureFieldSort(DDMIndexerImpl.java:201)
              at com.liferay.dynamic.data.mapping.internal.util.DDMIndexerImpl.createDDMStructureFieldSort(DDMIndexerImpl.java:260)
              at com.liferay.asset.internal.util.AssetHelperImpl._getSearchSort(AssetHelperImpl.java:595)
              at com.liferay.asset.internal.util.AssetHelperImpl._getSearchSorts(AssetHelperImpl.java:619)
              at com.liferay.asset.internal.util.AssetHelperImpl._getAssetSearcher(AssetHelperImpl.java:562)
              at com.liferay.asset.internal.util.AssetHelperImpl.searchAssetEntries(AssetHelperImpl.java:483)
              at com.liferay.asset.internal.util.AssetHelperImpl.searchAssetEntries(AssetHelperImpl.java:462)
              at com.liferay.asset.publisher.web.internal.util.AssetPublisherHelperImpl.getAssetEntries(AssetPublisherHelperImpl.java:147)
              at com.liferay.asset.publisher.web.internal.util.AssetPublisherHelperImpl._getAssetEntryResultsByDefault(AssetPublisherHelperImpl.java:1021)
              at com.liferay.asset.publisher.web.internal.util.AssetPublisherHelperImpl.getAssetEntryResults(AssetPublisherHelperImpl.java:485)
              at com.liferay.asset.publisher.web.internal.display.context.AssetPublisherDisplayContext.getAssetEntryResults(AssetPublisherDisplayContext.java:447)
              at org.apache.jsp.view_jsp._jspService(view_jsp.java:697)
              at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
              at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:411)
              at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473)
              at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
      2022-03-18 11:17:25.107 ERROR [http-nio-10080-exec-17][render_portlet_jsp:131] null
      

      Attachments

        Activity

          People

            summer.zhang Summer Zhang
            sammso Sampsa Sohlman
            Kiyoshi Lee Kiyoshi Lee
            Laszlo Pap Laszlo Pap
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:
              1 year, 6 weeks, 6 days ago

              Packages

                Version Package
                7.0.X
                7.1.X
                7.2.10 DXP FP18
                7.2.X
                7.3.X
                7.4.3.18 CE GA18
                7.4.3.21 CE GA21
                7.4.3.22 CE GA22
                Master