Jamie Williams created OLINGO-591:
-------------------------------------
Summary: RestUtil query parameter extraction methods incorrectly
extract an empty parameter when evaluating a zero-length query string
Key: OLINGO-591
URL: https://issues.apache.org/jira/browse/OLINGO-591
Project: Olingo
Issue Type: Bug
Affects Versions: V2 2.0.3
Reporter: Jamie Williams
Priority: Minor
When org.apache.olingo.odata2.core.servlet.RestUtil.extractQueryParameters is
invoked with a zero-length String value for the 'queryString' parameter the
method incorrectly adds a Map entry with a zero-length String key and a
corresponding zero-length String value.
The same is true of the
org.apache.olingo.odata2.core.servlet.RestUtil.extractAllQueryParameters, but
in that case the Map entry value is a List containing a single empty String.
This can cause incorrect request parsing results if the returned Maps are
supplied as to org.apache.olingo.odata2.core.uri.UriParserImpl.parse or
org.apache.olingo.odata2.core.uri.UriParserImpl.parseAll. As
org.apache.olingo.odata2.core.uri.UriParserImpl.distributeQueryParameters will
simply interpret a key that doesn't start with "$" as a non-system query
option, they empty key/value pair will be added to the otherQueryParameters Map
which will in turn be added to UriInfo.customQueryParameters in
org.apache.olingo.odata2.core.uri.UriParserImpl.handleOtherQueryParammeters.
The final result is that the returned UriInfo will be an incorrect
representation of the request URI.
The problem in each step is from a lack of checking for String emptiness. This
is most easily solved by adding that check in addition to the existing null
checks in the two RestUtil methods.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)