Uploaded image for project: 'Lucene - Core'
  1. Lucene - Core
  2. LUCENE-8672

NullPointerException in o.a.solr.search.facet.FacetFieldProcessor.findTopSlots()

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Invalid
    • 9.0
    • None
    • None
    • None
    • New

    Description

      Requesting the following URL causes Solr to return an HTTP 500 error response:

      http://localhost:8983/solr/films/select?facet.sort=asc&facet=on&bf=2&q=x&facet.version=2&facet.field=genre
      

      The error response seems to be caused by the following uncaught exception:

      java.lang.NullPointerException
      	at org.apache.solr.search.facet.FacetFieldProcessor.lambda$findTopSlots$1(FacetFieldProcessor.java:325)
      	at org.apache.solr.search.facet.FacetFieldProcessor$1.lessThan(FacetFieldProcessor.java:331)
      	at org.apache.solr.search.facet.FacetFieldProcessor$1.lessThan(FacetFieldProcessor.java:329)
      	at org.apache.lucene.util.PriorityQueue.upHeap(PriorityQueue.java:254)
      	at org.apache.lucene.util.PriorityQueue.add(PriorityQueue.java:131)
      	at org.apache.solr.search.facet.FacetFieldProcessor.findTopSlots(FacetFieldProcessor.java:363)
      	at org.apache.solr.search.facet.FacetFieldProcessorByArray.calcFacets(FacetFieldProcessorByArray.java:114)
      	at org.apache.solr.search.facet.FacetFieldProcessorByArray.process(FacetFieldProcessorByArray.java:62)
      	at org.apache.solr.search.facet.FacetRequest.process(FacetRequest.java:401)
      	at org.apache.solr.search.facet.FacetProcessor.processSubs(FacetProcessor.java:472)
      	at org.apache.solr.search.facet.FacetProcessor.fillBucket(FacetProcessor.java:429)
      	at org.apache.solr.search.facet.FacetQueryProcessor.process(FacetQuery.java:64)
      	at org.apache.solr.search.facet.FacetRequest.process(FacetRequest.java:401)
      	at org.apache.solr.search.facet.FacetModule.process(FacetModule.java:139)
      	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:298)
      	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199)
      	at org.apache.solr.core.SolrCore.execute(SolrCore.java:2559)
      	at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:711)
      	at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:516)
      	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:394)
      	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:340)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)
      [...]
      

      Removing any parameter in the URL makes the NPE disappear, so all URL parameters seem to be involved.

      Method org.apache.solr.search.facet.FacetFieldProcessor.findTopSlots(), at line 316 retrieves the field sortAcc, which is null. This null pointer is subsequently used in a lambda expression, line 325 (and 320!). I guess the problem is that some input validation is missing?

      We found this bug using Diffblue Microservices Testing. Find more information on this fuzz testing campaign.

      Attachments

        1. home.zip
          376 kB
          Cesar Rodriguez

        Activity

          People

            Unassigned Unassigned
            cesar.rodriguez Cesar Rodriguez
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: