I agree with you Dick, but some developers complained that they "couldn’t
re-use their string parsers" (despite no existing parser supporting key=“value”)
so now we have to double escape backslashes.  I very much feel that this is tail
wagging the dog.

> On 3 May 2021, at 01:25, Dick Franks <rwfra...@gmail.com> wrote:
> 
> All,
> 
> I have considerable difficulty with these test vectors at the end of
> Appendix D.2:
> 
>        16 foo.example.org. alpn="f\\\\oo\\,bar,h2"
>        16 foo.example.org. alpn=f\\\092oo\092,bar,h2
> 
>        \# 35 (
>        00 10                                              ; priority
>        03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 6f 72 67 00 ; target
>        00 01                                              ; key 1
>        00 0c                                              ; param length 12
>        08                                                 ; alpn length 8
>        66 5c 6f 6f 2c 62 61 72                            ; alpn value
>        02                                                 ; alpn length 2
>        68 32                                              ; alpn value
>        )
> 
> which appear to be incompatible with RFC1035 5.1 paragraph 10:
> 
>        Because these files are text files several special encodings are
>        necessary to allow arbitrary data to be loaded.  In particular:
> 
>        ...
> 
>        \X          where X is any character other than a digit (0-9), is
>                    used to quote that character so that its special meaning
>                    does not apply.  For example, "\." can be used to place
>                    a dot character in a label.
> 
>        \DDD        where each D is a digit is the octet corresponding to
>                    the decimal number described by DDD.  The resulting
>                    octet is assumed to be text and is not checked for
>                    special meaning.
> 
> The intention appears to be to include (a) a single arbitrary octet in
> the argument, and (b) a plain text comma not being a delimiter in the
> argument list. The specimen result is consistent with that assumption.
> 
> Armed with the weapons supplied by RFC1035, the obvious way to
> represent such an argument is:   alpn="f\092oo\,bar,h2"
> 
> 
> A parser adhering strictly to RFC1035 zone file escape conventions:
> 
>        #!/usr/bin/perl
>        use Net::DNS 1.31;
>        use Net::DNS::ZoneFile;
> 
>        my $zonefile = new Net::DNS::ZoneFile(\*DATA);
>        while ( my $rr = $zonefile->read ) {
>            $rr->print;
>        }
>        exit;
> 
>        __DATA__
>        rfc1035-compliant.example.  SVCB    16 foo.example.org.
> alpn="f\092oo\,bar,h2"
> 
> produces the desired wire-format image:
> 
>        rfc1035-compliant.example.  IN      SVCB    ( \# 35 0010    ; 16
>                03666f6f076578616d706c65036f7267 00         ; foo.example.org.
>                0001 000c 08665c6f6f2c626172026832 )
> 
> Other parsers are available.
> 
> 
> The test vectors, as written, appear to rely upon somehow reactivating
> the special meaning of the escape character which is explicitly
> disallowed by RFC1035.
> 
> The result in each case is:
> 
>        non-compliant.example.      IN      SVCB    ( \# 37 0010    ; 16
>                03666f6f076578616d706c65036f7267 00         ; foo.example.org.
>                0001 000e 06665c5c6f6f5c03626172026832 )
> 
> the escaped escape characters being inserted as uninterpreted text per 
> RFC1035.
> 
> 
> Dick Franks
> ________________________
> 
> _______________________________________________
> DNSOP mailing list
> DNSOP@ietf.org
> https://www.ietf.org/mailman/listinfo/dnsop

-- 
Mark Andrews, ISC
1 Seymour St., Dundas Valley, NSW 2117, Australia
PHONE: +61 2 9871 4742              INTERNET: ma...@isc.org

_______________________________________________
DNSOP mailing list
DNSOP@ietf.org
https://www.ietf.org/mailman/listinfo/dnsop

Reply via email to