Subject: [netmod] escapes - WAS: [Netconf] [Technical Errata Reported] RFC6536 (3862)

From: Ladislav Lhotka <[email-masked]>
Date: Fri, 10 Jan 2014 15:31:25 +0100

On 10 Jan 2014, at 14:58, Jernej Tuljak <[email-masked]> wrote:

> If this is true, then it is RFC6020 that needs a clarification on this. Namely, that the "special character" which follows a backslash need not be special and that it does not represent an escape sequence in such a case.
> 
>   Within a double-quoted string (enclosed within " "), a backslash
>   character introduces a special character, which depends on the
>   character that immediately follows the backslash:
> 
>    \n      new line
>    \t      a tab character
>    \"      a double quote
>    \\      a single backslash
> 
> My reading is that a backslash starts a YANG escape sequence and may therefore be removed during string dequoting. A "\*" ends up as *, which is not equivalent to '\*’.

In XSD regular expressions, which are also used by YANG, it is an error if a backslash plus something is not defined as an escape sequence. So I think YANG should behave the same for double-quoted string, i.e. a backslash followed by something else than the four characters listed above should be flagged as an error (“illegal escape”).

Lada

> 
> Please move this discussion over to NETMOD it that's the case.
> 
> Jernej
> 
> Dne 10.1.2014 14:40, piše Martin Bjorklund:
>> Hi,
>> 
>> This errata should be rejected.  "\*" is equvalent to '\*'.  \* in a
>> double quoted string is not an escape sequence, which means that the
>> characters are interpreted literally, i.e. the two characters \
>> followed by *.
>> 
>> The same goes for errata 3863.
>> 
>> /martin
>> 
>> RFC Errata System <[email-masked]> wrote:
>>> The following errata report has been submitted for RFC6536,
>>> "Network Configuration Protocol (NETCONF) Access Control Model".
>>> 
>>> --------------------------------------
>>> You may review the report below and at:
>>> http://www.rfc-editor.org/errata_search.php?rfc=6536&eid=3862
>>> 
>>> --------------------------------------
>>> Type: Technical
>>> Reported by: Jernej Tuljak <[email-masked]>
>>> 
>>> Section: 3.5.2.
>>> 
>>> Original Text
>>> -------------
>>>      typedef matchall-string-type {
>>>        type string {
>>>          pattern "\*";
>>>        }
>>>        description
>>>          "The string containing a single asterisk '*' is used
>>>           to conceptually represent all possible values
>>>           for the particular leaf using this data type.";
>>>      }
>>> 
>>> Corrected Text
>>> --------------
>>>      typedef matchall-string-type {
>>>        type string {
>>>          pattern '\*';
>>>        }
>>>        description
>>>          "The string containing a single asterisk '*' is used
>>>           to conceptually represent all possible values
>>>           for the particular leaf using this data type.";
>>>      }
>>> 
>>> Notes
>>> -----
>>> As per RFC6020, Section 6.1.3., a backslash within a double-quoted
>>> string introduces a special character. The only valid escape sequences
>>> inside a double-quoted YANG string are: \n, \t, \" and \. As \* is not
>>> a valid escape sequence, a single quoted string should be used to
>>> specify the offending pattern statement's argument. The quotes could
>>> also be omitted.
>>> 
>>> Instructions:
>>> -------------
>>> This errata is currently posted as "Reported". If necessary, please
>>> use "Reply All" to discuss whether it should be verified or
>>> rejected. When a decision is reached, the verifying party (IESG)
>>> can log in to change the status and edit the report, if necessary.
>>> 
>>> --------------------------------------
>>> RFC6536 (draft-ietf-netconf-access-control-07)
>>> --------------------------------------
>>> Title : Network Configuration Protocol (NETCONF) Access Control Model
>>> Publication Date    : March 2012
>>> Author(s)           : A. Bierman, M. Bjorklund
>>> Category            : PROPOSED STANDARD
>>> Source              : Network Configuration
>>> Area                : Operations and Management
>>> Stream              : IETF
>>> Verifying Party     : IESG
>>> 
> 
> _______________________________________________
> Netconf mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/netconf

--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C

---

From: Jernej Tuljak <[email-masked]>
Date: Fri, 10 Jan 2014 16:01:48 +0100

I've read that section a couple of times now and I now agree with Martin 
that "\*" is currently equivalent to '\*'. My reading would probably be 
correct if there was no second comma in the text I quoted. Oh, well...

    Within a double-quoted string (enclosed within " "), a backslash
    character may introduce a special character, which depends on the
    character that immediately follows the backslash:

would be better, no?

Jernej

Dne 10.1.2014 15:31, piše Ladislav Lhotka:
> netmod mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/netmod

---

From: Ladislav Lhotka <[email-masked]>
Date: Fri, 10 Jan 2014 16:16:21 +0100

>     character that immediately follows the backslash:

IMO, current wording permits three defensible interpretations:

1. "\*" == '\*'
2. "\*" == '*'
3. "\*' is an error

So this should be clarified.

As I wrote, I'd prefer #3 because it would be the same as the behaviour of "\" in regex patterns.

Lada