Uploaded image for project: 'Abdera'
  1. Abdera
  2. ABDERA-225

At ("@") and colon (":") in path segments should not be escaped by IRI.normalize()

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 0.4.0
    • Fix Version/s: None
    • Labels:
      None

      Description

      The `normalize` method on IRI objects escapes ":" and "@" in path segments, which doesn't seem to comply with the ABNF rules given in the IRI RFC (RFC 3987 section 2.2. <http://tools.ietf.org/html/rfc3987#section-2.2>).

      It seems that `isegment` explicitly allows for ":" and "@", according to:

      isegment = *ipchar
      ...
      ipchar = iunreserved / pct-encoded / sub-delims / ":" / "@"

      The `normalize` method encodes each segment by filtering on `CharUtils.Profile.IPATHNODELIMS`, via `CharUtils.is_ipathnodelims`, which uses `is_ipath` && `!isGenDelim`.

      The effect is that this (groovy):

      import org.apache.abdera.i18n.iri.IRI
      println new IRI("http://example.org/publ/1999:175").normalize()
      println new IRI("http://example.org/people/admin@example.org").normalize()

      prints out:

      http://example.org/publ/1999%3A175
      http://example.org/people/admin%40example.org

      , where I would expect no escaping at all. Note that:

      println new java.net.URI("http://example.org/publ/1999:175").normalize()
      println new java.net.URI("http://example.org/people/admin@example.org").normalize()

      results in the expected:

      http://example.org/publ/1999:175
      http://example.org/people/admin@example.org

      Since an ipath is composed of "/"-separated isegments (with some specifics regarding absolute, rootless and noscheme), perhaps a solution would be to rework `is_ipath` into calls fully mimicking these ABNF rules, and use `UrlEncoding.encode(..., Profile.IPATH.filter())` in `IRI.normalize(path)`?

        Activity

        Hide
        jasnell James M Snell added a comment -

        Fix checked in

        Show
        jasnell James M Snell added a comment - Fix checked in
        Hide
        jasnell James M Snell added a comment -

        I have a fix pending, just can't seem to be able to access the svn server again today.

        Show
        jasnell James M Snell added a comment - I have a fix pending, just can't seem to be able to access the svn server again today.

          People

          • Assignee:
            Unassigned
            Reporter:
            niklasl Niklas Lindström
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development