RFC Errata

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/
Report New Erratum