Uploaded image for project: 'yangtools'
  1. yangtools
  2. YANGTOOLS-1077

Validate YANG strings for forbidden characters

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Won't Do
    • Icon: Medium Medium
    • None
    • None
    • codecs
    • None

      According to RFC7950, YANG strings can't store forbidden characters defined in Section 14, https://tools.ietf.org/html/rfc7950#section-14

      Here is the particular section of the rule:

      yang-string = *yang-char
      ;; any Unicode or ISO/IEC 10646 character, including tab, carriage
      ;; return, and line feed but excluding the other C0 control
      ;; characters, the surrogate blocks, and the noncharacters
      yang-char = %x09 / %x0A / %x0D / %x20-D7FF /
      ; exclude surrogate blocks %xD800-DFFF
      %xE000-FDCF / ; exclude noncharacters %xFDD0-FDEF
      %xFDF0-FFFD / ; exclude noncharacters %xFFFE-FFFF
      %x10000-1FFFD / ; exclude noncharacters %x1FFFE-1FFFF
      %x20000-2FFFD / ; exclude noncharacters %x2FFFE-2FFFF
      %x30000-3FFFD / ; exclude noncharacters %x3FFFE-3FFFF
      %x40000-4FFFD / ; exclude noncharacters %x4FFFE-4FFFF
      %x50000-5FFFD / ; exclude noncharacters %x5FFFE-5FFFF
      %x60000-6FFFD / ; exclude noncharacters %x6FFFE-6FFFF
      %x70000-7FFFD / ; exclude noncharacters %x7FFFE-7FFFF
      %x80000-8FFFD / ; exclude noncharacters %x8FFFE-8FFFF
      %x90000-9FFFD / ; exclude noncharacters %x9FFFE-9FFFF
      %xA0000-AFFFD / ; exclude noncharacters %xAFFFE-AFFFF
      %xB0000-BFFFD / ; exclude noncharacters %xBFFFE-BFFFF
      %xC0000-CFFFD / ; exclude noncharacters %xCFFFE-CFFFF
      %xD0000-DFFFD / ; exclude noncharacters %xDFFFE-DFFFF
      %xE0000-EFFFD / ; exclude noncharacters %xEFFFE-EFFFF
      %xF0000-FFFFD / ; exclude noncharacters %xFFFFE-FFFFF
      %x100000-10FFFD ; exclude noncharacters %x10FFFE-10FFFF

       
      Yangtools now does not provide any validation of this form, so it could create some issues, although accepting invalid strings might be good for interoperability, but emitting invalid strings (and exposing them to mdsal plugins) is both RFC-incompliant and bad for interoperability.

      UPDATE: "yang strings" means not only string literals written in the .yang files themselves, but also all data of the builtin type string [1] (and presumably any derived type).

      [1] https://tools.ietf.org/html/rfc7950#section-9.4

            martinbugan Martin Bugáň
            martinbugan Martin Bugáň
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: