Errata
Verified (3)
RFC 8777 inline-errata
Source of RFC: mboned (ops)
Errata-ID: 6218
- Status:
- Verified
- Type:
- Technical
- Publication Formats:
- TXT PDF HTML
- Reported By:
- Brian Wellington
- Date Reported:
- 2020-07-01
- Verified by:
- Warren Kumari (Ops AD)
- Date Verified:
- 2020-07-17
Section 4.3.2 says:
10 IN TYPE260 \# (
18 ; length
0a ; precedence=10
02 ; D=0, relay type=2, an IPv6 address
20010db800000000000000000000000f ) ; 2001:db8::15
10 IN TYPE260 \# (
24 ; length
80 ; precedence=128
83 ; D=1, relay type=3, a wire-encoded domain name
09616d7472656c617973076578616d706c6503636f6d ) ; domain name
It should say:
10 IN TYPE260 \# (
18 ; length
0a ; precedence=10
02 ; D=0, relay type=2, an IPv6 address
20010db8000000000000000000000015 ) ; 2001:db8::15
10 IN TYPE260 \# (
25 ; length
80 ; precedence=128
83 ; D=1, relay type=3, a wire-encoded domain name
09616d7472656c617973076578616d706c6503636f6d00 ) ; domain name
Notes:
In the first example, the IPv6 address is incorrectly encoded.
In the second example, the trailing root label of the domain name was not included, and should be. This also increases the length by 1 byte.
Errata-ID: 6688
- Status:
- Verified
- Type:
- Technical
- Publication Formats:
- TXT PDF HTML
- Reported By:
- Dick Franks
- Date Reported:
- 2021-09-19
- Verified by:
- Warren Kumari (Ops AD)
- Date Verified:
- 2021-10-05
Section 5 says:
+-------+---------------------------------------+
| 3 | A wire-encoded domain name is present |
+-------+---------------------------------------+
| 4-255 | Unassigned |
+-------+---------------------------------------+
Table 2: Initial Contents of the "Relay Type
Field" Registry
Values 0, 1, 2, and 3 are further explained in Sections 4.2.3 and
4.2.4. Relay type numbers 4 through 255 can be assigned with a
policy of Specification Required (as described in [RFC8126]).
It should say:
+-------+---------------------------------------+
| 3 | A wire-encoded domain name is present |
+-------+---------------------------------------+
| 4-127 | Unassigned |
+-------+---------------------------------------+
Table 2: Initial Contents of the "Relay Type
Field" Registry
Values 0, 1, 2, and 3 are further explained in Sections 4.2.3 and
4.2.4. Relay type numbers 4 through 127 can be assigned with a
policy of Specification Required (as described in [RFC8126]).
Notes:
Relay Type is a 7 bit field, the MS bit of the wire-format octet contains the D-bit.
[Update: 2021-10-05 - AD: Confirmed that you can't fit 8 bits into a 7 bit field - see: https://mailarchive.ietf.org/arch/msg/mboned/cdzHm6Uxwuua5zsOONHtK-RmdU8/ ]
Errata-ID: 6155
- Status:
- Verified
- Type:
- Editorial
- Publication Formats:
- TXT PDF HTML
- Reported By:
- Jake Holland
- Date Reported:
- 2020-05-01
- Verified by:
- Warren Kumari (Ops AD)
- Date Verified:
- 2021-04-27
Section Appendix A says:
<CODE BEGINS>
$ cat translate.py
#!/usr/bin/env python3
import sys
name=sys.argv[1]
wire=''
for dn in name.split('.'):
if len(dn) > 0:
wire += ('%02x' % len(dn))
wire += (''.join('%02x'%ord(x) for x in dn))
print(len(wire)//2) + 2
print(wire)
$ ./translate.py amtrelays.example.com
24
09616d7472656c617973076578616d706c6503636f6d
<CODE ENDS>
It should say:
<CODE BEGINS>
$ cat translate.py
#!/usr/bin/env python3
import sys
name=sys.argv[1]
wire=''
for dn in name.split('.'):
if len(dn) > 0:
wire += ('%02x' % len(dn))
wire += (''.join('%02x'%ord(x) for x in dn))
print(len(wire)//2 + 2)
print(wire)
$ ./translate.py amtrelays.example.com
24
09616d7472656c617973076578616d706c6503636f6d
<CODE ENDS>
Notes:
The original sample code gives a runtime error when executed. The +2 should have been inside the parenthesis for the print function.
Held for Document Update (1)
RFC 8777 inline-errata
Source of RFC: mboned (ops)
Errata-ID: 8609
- Status:
- Held for Document Update
- Type:
- Technical
- Publication Formats:
- TXT PDF HTML
- Reported By:
- Viktor Dukhovni
- Date Reported:
- 2025-10-18
- Held for Document Update by:
- Mohamed BOUCADAIR
- Date Held for Document Update:
- 2026-04-30
Section Appendix A says:
#!/usr/bin/env python3
import sys
name=sys.argv[1]
wire=''
for dn in name.split('.'):
if len(dn) > 0:
wire += ('%02x' % len(dn))
wire += (''.join('%02x'%ord(x) for x in dn))
print(len(wire)//2) + 2
print(wire)
It should say:
#!/usr/bin/env python3
import sys
name=sys.argv[1]
wire=''
for dn in name.split('.'):
if len(dn) > 0:
wire += ('%02x' % len(dn))
wire += (''.join('%02x'%ord(x) for x in dn))
wire += '00'
print(len(wire)//2 + 2)
print(wire)
Notes:
Given erratum 6218 (<https://www.rfc-editor.org/errata/eid6218>: missing final empty root label), already verified, the Python code should also produce the correct output.
======Verifier Notes
After discussion with Jim Reid (DNSDIR Chair) in Shenzhen, I was convinced that more discussion is needed to agree on the exact changes and that the fix may concern several places in the document. The situation is even complicated because this erratum concerns the same code as EID 6155 [1], which was verified in 2021 (thanks Rebecca VanRheenen for the note).
See more details at https://mailarchive.ietf.org/arch/msg/mboned/F_bgq3YO4B1p_ajTaofOZzixNwQ/