Uploaded image for project: 'Undertow'
  1. Undertow
  2. UNDERTOW-2163

Predicate Language cannot set attribute to empty string

    XMLWordPrintable

Details

    Description

      The following predicate handler, 

      set( attribute=%{i,X-Tomcat-DocRoot}, value='' ) 

      produces a nasty parsing exception 

      java.lang.StringIndexOutOfBoundsException: index -1,length 0
              at java.base/java.lang.String.checkIndex(Unknown Source)
              at java.base/java.lang.AbstractStringBuilder.charAt(Unknown Source)
              at java.base/java.lang.StringBuilder.charAt(Unknown Source)
              at io.undertow.server.handlers.builder.PredicatedHandlersParser.tokenize(PredicatedHandlersParser.java:617)
              at io.undertow.server.handlers.builder.PredicatedHandlersParser.parse(PredicatedHandlersParser.java:84)
      

      It doesn't seem that the parser was designed to handle the simple scenario of empty quotes!  

      Leaving off the `value` parameter from the handler parses OK,

      set( attribute=%{i,X-Tomcat-DocRoot} ) 

      but throws an NPE when the handler actually runs:

      java.lang.NullPointerException: null
              at io.undertow.server.handlers.SetAttributeHandler.handleRequest(SetAttributeHandler.java:117)
              at io.undertow.predicate.PredicatesHandler.handleRequest(PredicatesHandler.java:113)

      The expected behavior for both of these examples would be to initialize the attribute (an HTTP request header in this case) to an empty value.

       

      Attachments

        Issue Links

          Activity

            Public project attachment banner

              context keys: [headless, issue, helper, isAsynchronousRequest, project, action, user]
              current Project key: UNDERTOW

              People

                rhn-support-rmartinc Ricardo Martin Camarero
                bdw429s Brad Wood
                Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                  Created:
                  Updated:
                  Resolved: