Uploaded image for project: 'HttpComponents HttpClient'
  1. HttpComponents HttpClient
  2. HTTPCLIENT-588

relative URIs with internal double-slashes ('//') misparsed

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 3.0.1
    • 3.1 Alpha 1
    • HttpClient (classic)
    • None

    Description

      URI.parseUriReference()'s heuristic for interpreting URI parts is thrown off by relative URIs which include an internal '//'. As a result, portions of the supplied relative URI (path) can be lost.

      For example:

      URI rel = new URI("foo//bar//baz");
      rel.toString();
      (java.lang.String) //bar//baz

      The culprit seems to be line 1961 of URI improperly concluding that two slashes later than the beginning of 'tmp' are still indicative the URI is a 'net_path'.

      A possible quick fix might be to add a '!isStartedFromPath &&' to the beginning of the line 1961 test, making the line:

      if (!isStartedFromPath && at + 2 < length && tmp.charAt(at + 1) == '/') {

      ... and thus preventing the misguided authority-parsing from happening when earlier analysis already identified the current string as a strictly path-oriented URI.

      (It also appears the setting of the is_net_path boolean at the end of this if's block may be wrong; this code is run for hier_path URIs that are not net_paths in the 2396 syntax. For example:

      URI uri = new URI("http://www.example.com/some/page");
      uri.isNetPath();
      (boolean) true

      )

      Attachments

        1. httpclient-588.patch
          2 kB
          Gordon Mohr

        Issue Links

          Activity

            People

              Unassigned Unassigned
              gojomo Gordon Mohr
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: