RFC Errata
RFC 1738, "Uniform Resource Locators (URL)", December 1994
Note: This RFC has been obsoleted by RFC 4248, RFC 4266
Note: This RFC has been updated by RFC 1808, RFC 2368, RFC 2396, RFC 3986, RFC 6196, RFC 6270, RFC 8089
Source of RFC: Legacy
Errata ID: 2845
Status: Rejected
Type: Editorial
Publication Format(s) : TEXT
Reported By: Mykyta Yevstifeyev
Date Reported: 2011-06-26
Rejected by: Peter Saint-Andre
Date Rejected: 2011-06-27
Section 5 says:
scheme = 1*[ lowalpha | digit | "+" | "-" | "." ] [ . . . ] hostname = *[ domainlabel "." ] toplabel domainlabel = alphadigit | alphadigit *[ alphadigit | "-" ] alphadigit toplabel = alpha | alpha *[ alphadigit | "-" ] alphadigit [ . . . ] user = *[ uchar | ";" | "?" | "&" | "=" ] password = *[ uchar | ";" | "?" | "&" | "=" ] [ . . . ] fpath = fsegment *[ "/" fsegment ] fsegment = *[ uchar | "?" | ":" | "@" | "&" | "=" ] [ . . . ] hpath = hsegment *[ "/" hsegment ] hsegment = *[ uchar | ";" | ":" | "@" | "&" | "=" ] search = *[ uchar | ";" | ":" | "@" | "&" | "=" ] [ . . . ] group = alpha *[ alpha | digit | "-" | "." | "+" | "_" ] article = 1*[ uchar | ";" | "/" | "?" | ":" | "&" | "=" ] "@" host [ . . . ] ppath = psegment *[ "/" psegment ] psegment = *[ uchar | "?" | ":" | "@" | "&" | "=" ] fieldspec = ";" fieldname "=" fieldvalue fieldname = *[ uchar | "?" | ":" | "@" | "&" ] fieldvalue = *[ uchar | "?" | ":" | "@" | "&" ]
It should say:
scheme = 1*( lowalpha | digit | "+" | "-" | "." ) [ . . . ] hostname = *( domainlabel "." ) toplabel domainlabel = alphadigit | alphadigit *( alphadigit | "-" ) alphadigit toplabel = alpha | alpha *( alphadigit | "-" ) alphadigit [ . . . ] user = *( uchar | ";" | "?" | "&" | "=" ) password = *( uchar | ";" | "?" | "&" | "=" ) [ . . . ] fpath = fsegment *( "/" fsegment ) fsegment = *( uchar | "?" | ":" | "@" | "&" | "=" ) [ . . . ] hpath = hsegment *( "/" hsegment ) hsegment = *( uchar | ";" | ":" | "@" | "&" | "=" ) search = *( uchar | ";" | ":" | "@" | "&" | "=" ) [ . . . ] group = alpha *( alpha | digit | "-" | "." | "+" | "_" ) article = 1*( uchar | ";" | "/" | "?" | ":" | "&" | "=" ) "@" host [ . . . ] ppath = psegment *( "/" psegment ) psegment = *( uchar | "?" | ":" | "@" | "&" | "=" ) fieldspec = ";" fieldname "=" fieldvalue fieldname = *( uchar | "?" | ":" | "@" | "&" ) fieldvalue = *( uchar | "?" | ":" | "@" | "&" )
Notes:
Given this is BNF of RFC 822 construction <n>*<m>[element] is incorrect, as RFC 822 defines:
> 2.5. [RULE]: OPTIONAL
>
> Square brackets enclose optional elements; "[foo bar]" is
> equivalent to "*1(foo bar)".
and therefore [] construction is illegal in the aforementioned one. My proposal is to replace all occurrences of [] construction where they are used in the meaning of () with the legal-as-per-822 one.
--VERIFIER NOTES--
This specification does not use the BNF syntax from RFC 822. Please refer
to the first paragraph of Section 5:
###
This is a BNF-like description of the Uniform Resource Locator
syntax, using the conventions of RFC822, except that "|" is used to
designate alternatives, and brackets [] are used around optional or
repeated elements. Briefly, literals are quoted with "", optional
elements are enclosed in [brackets], and elements may be preceded
with <n>* to designate n or more repetitions of the following
element; n defaults to 0.
###
The definitions follow the syntax used in this document. Thus
the report is incorrect.