RFC Errata
RFC 3986, "Uniform Resource Identifier (URI): Generic Syntax", January 2005
Note: This RFC has been updated by RFC 6874, RFC 7320, RFC 8820
Source of RFC: IETF - NON WORKING GROUPArea Assignment: app
Errata ID: 4394
Status: Rejected
Type: Technical
Publication Format(s) : TEXT
Reported By: Steven Liekens
Date Reported: 2015-06-15
Rejected by: Barry Leiba
Date Rejected: 2015-06-15
Section 3.2.2 says:
IPv6address = 6( h16 ":" ) ls32 / "::" 5( h16 ":" ) ls32 / [ h16 ] "::" 4( h16 ":" ) ls32 / [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 / [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 / [ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 / [ *4( h16 ":" ) h16 ] "::" ls32 / [ *5( h16 ":" ) h16 ] "::" h16 / [ *6( h16 ":" ) h16 ] "::"
It should say:
IPv6address = ( 6( h16 ":" ) ls32 ) / ( "::" 5( h16 ":" ) ls32 ) / ( [ h16 ] "::" 4( h16 ":" ) ls32 ) / ( [ h16-2 ] "::" 3( h16 ":" ) ls32 ) / ( [ h16-3 ] "::" 2( h16 ":" ) ls32 ) / ( [ h16-4 ] "::" h16 ":" ls32 ) / ( [ h16-5 ] "::" ls32 ) / ( [ h16-6 ] "::" h16 ) / ( [ h16-7 ] "::" ) h16-7 = ( *6( h16 ":" ) h16 ) / h16-6 h16-6 = ( *5( h16 ":" ) h16 ) / h16-5 h16-5 = ( *4( h16 ":" ) h16 ) / h16-4 h16-4 = ( *3( h16 ":" ) h16 ) / h16-3 h16-3 = ( *2( h16 ":" ) h16 ) / h16-2 h16-2 = ( [ h16 ":" ] h16 ) / h16
Notes:
The 'IPv6address' rule requires more than 1 lookahead symbol.
Example value: 1::
Parsers that implement a first-match-wins strategy will erroneously match 1:: as ( h16 ":" ), followed by an unexpected symbol.
Parsers that implement a first-match-wins strategy with the corrected grammar will correctly match 1:: as ( h16 "::" ).
--VERIFIER NOTES--
As with errata report 4393, this is trying to use ABNF beyond what it's meant for.