The default printing for attributes is double quotes.
authorAlan T. DeKok <aland@freeradius.org>
Fri, 19 Jun 2015 16:15:21 +0000 (12:15 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Fri, 19 Jun 2015 16:15:21 +0000 (12:15 -0400)
Because now that strings are binary safe, we CANNOT print
attribute contents as single quoted strings.  The single
quoted strings will escape \ and ', and NOTHING else.

When strings contain non-printable data, the only safe
thing is to print them as double quoted strings.

perl -p -i -e "s/ = '([^']+?)'/ = \"\$1\"/g" file...

src/lib/print.c
src/tests/keywords/pairs
src/tests/unit/extended.txt
src/tests/unit/rfc.txt
src/tests/unit/vendor.txt
src/tests/unit/wimax.txt

index 3c24a1c..efa240f 100644 (file)
@@ -720,7 +720,7 @@ size_t vp_prints(char *out, size_t outlen, VALUE_PAIR const *vp)
        out += len;
        freespace -= len;
 
-       len = vp_prints_value(out, freespace, vp, '\'');
+       len = vp_prints_value(out, freespace, vp, '"');
        if (is_truncated(len, freespace)) return (outlen - freespace) + len;
        freespace -= len;
 
index a829c6d..4230c57 100644 (file)
@@ -11,25 +11,25 @@ update {
        reply:Filter-Id = 'filter'
 }
 
-if ("%{pairs:request:}" != "User-Name = 'bob', User-Password = 'hello', Tmp-String-0 = 'This is a string', Tmp-String-0 = 'This is another one', Tmp-Octets-0 = 0x000504030201, Tmp-Integer-0 = 7331, Tunnel-Private-Group-Id:5 = '127.0.0.1'") {
+if ("%{pairs:request:}" != "User-Name = \"bob\", User-Password = \"hello\", Tmp-String-0 = \"This is a string\", Tmp-String-0 = \"This is another one\", Tmp-Octets-0 = 0x000504030201, Tmp-Integer-0 = 7331, Tunnel-Private-Group-Id:5 = \"127.0.0.1\"") {
        update reply {
                Filter-Id += 'fail 1'
        }
 }
 
-if ("%{pairs:Tmp-String-0}" != "Tmp-String-0 = 'This is a string'") {
+if ("%{pairs:Tmp-String-0}" != "Tmp-String-0 = \"This is a string\"") {
        update reply {
                Filter-Id += 'fail 2'
        }
 }
 
-if ("%{pairs:Tmp-String-0[*]}" != "Tmp-String-0 = 'This is a string', Tmp-String-0 = 'This is another one'") {
+if ("%{pairs:Tmp-String-0[*]}" != "Tmp-String-0 = \"This is a string\", Tmp-String-0 = \"This is another one\"") {
        update reply {
                Filter-Id += 'fail 3'
        }
 }
 
-if ("%{pairs:control:}" != "Cleartext-Password = 'hello'") {
+if ("%{pairs:control:}" != "Cleartext-Password = \"hello\"") {
        update reply {
                Filter-Id += 'fail 4'
        }
index abddb63..8b0e3a2 100644 (file)
@@ -80,7 +80,7 @@ data Attr-245.26.1.6 = 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
 # again, but the second one attr is not an extended attr
 decode f5 ff 1a 80 00 00 00 01 06 aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ab bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb 01 05 62 6f 62
-data Attr-245.26.1.6 = 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb, User-Name = 'bob'
+data Attr-245.26.1.6 = 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb, User-Name = "bob"
 
 # No data means that the attribute is an "invalid attribute"
 decode f5 04 01 00
index 21d3e52..e8c37b9 100644 (file)
 #  The output data is the hex version of the encoded attribute.
 #
 
-encode User-Name = 'bob'
+encode User-Name = "bob"
 data 01 05 62 6f 62
 
 decode -
-data User-Name = 'bob'
+data User-Name = "bob"
 
 decode 01 05 62 6f 62
-data User-Name = 'bob'
+data User-Name = "bob"
 
 #
 #  The Type/Length is OK, but the attribute data is of the wrong size.
index f54e429..42b77d6 100644 (file)
@@ -2,7 +2,7 @@ encode SN-VPN-Name = "foo"
 data 1a 0d 00 00 1f e4 00 02 00 07 66 6f 6f
 
 decode 1a 0d 00 00 1f e4 00 02 00 07 66 6f 6f
-data SN-VPN-Name = 'foo'
+data SN-VPN-Name = "foo"
 
 encode USR-Event-Id = 1234
 data 1a 0e 00 00 01 ad 00 00 bf be 00 00 04 d2
@@ -14,10 +14,10 @@ decode 1a 15 00 00 4e 20 01 0f 6c 69 74 68 69 61 73 70 72 69 6e 67 73
 data Attr-26.20000.1 = 0x6c6974686961737072696e6773
 
 decode 1a 2e 00 00 00 2b 1c 02 01 06 00 00 00 00 3c 20 31 35 35 2e 34 2e 31 32 2e 31 30 30 20 30 30 3a 30 30 3a 30 30 3a 30 30 3a 30 30 3a 30 30
-data 3Com-User-Access-Level = 3Com-Visitor, 3Com-Ip-Host-Addr = '155.4.12.100 00:00:00:00:00:00'
+data 3Com-User-Access-Level = 3Com-Visitor, 3Com-Ip-Host-Addr = "155.4.12.100 00:00:00:00:00:00"
 
 decode 1a 2c 00 00 00 2b 01 06 00 00 00 00 3c 20 31 35 35 2e 34 2e 31 32 2e 31 30 30 20 30 30 3a 30 30 3a 30 30 3a 30 30 3a 30 30 3a 30 30
-data 3Com-User-Access-Level = 3Com-Visitor, 3Com-Ip-Host-Addr = '155.4.12.100 00:00:00:00:00:00'
+data 3Com-User-Access-Level = 3Com-Visitor, 3Com-Ip-Host-Addr = "155.4.12.100 00:00:00:00:00:00"
 
 encode Vendor-Specific = 0xabcdef
 data Must use 'Attr-26 = ...' instead of 'Vendor-Specific = ...'
index b59df79..191b37e 100644 (file)
@@ -5,7 +5,7 @@ encode WiMAX-Release = "1.0"
 data 1a 0e 00 00 60 b5 01 08 00 01 05 31 2e 30
 
 decode -
-data WiMAX-Release = '1.0'
+data WiMAX-Release = "1.0"
 
 encode WiMAX-Accounting-Capabilities = 1
 data 1a 0c 00 00 60 b5 01 06 00 02 03 01
@@ -17,7 +17,7 @@ encode WiMAX-Release = "1.0", WiMAX-Accounting-Capabilities = 1
 data 1a 11 00 00 60 b5 01 0b 00 01 05 31 2e 30 02 03 01
 
 decode -
-data WiMAX-Release = '1.0', WiMAX-Accounting-Capabilities = IP-Session-Based
+data WiMAX-Release = "1.0", WiMAX-Accounting-Capabilities = IP-Session-Based
 
 encode -
 data 1a 11 00 00 60 b5 01 0b 00 01 05 31 2e 30 02 03 01
@@ -115,7 +115,7 @@ data Attr-26.24757.84.9.9.3 = 0x010237, WiMAX-PFDv2-Eth-Priority-Range-High = 84
 #  Simple test for continued attributes
 #
 decode 1a 0e 00 00 60 b5 01 08 80 01 05 31 2e 30 1a 0c 00 00 60 b5 01 06 00 02 03 00
-data WiMAX-Release = '1.0', WiMAX-Accounting-Capabilities = No-Accounting
+data WiMAX-Release = "1.0", WiMAX-Accounting-Capabilities = No-Accounting
 
 #
 #  See if encoding multiple attributes works
@@ -142,4 +142,4 @@ encode WiMAX-Capability = 0x01ff454545454545454545454545454545454545454545454545
 data 1a ff 00 00 60 b5 01 f9 80 01 ff 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 1a 15 00 00 60 b5 01 0f 00 45 45 45 45 45 45 45 45 45 04 03 01
 
 decode -
-data WiMAX-Release = 'EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE', WiMAX-Idle-Mode-Notification-Cap = Supported
+data WiMAX-Release = "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE", WiMAX-Idle-Mode-Notification-Cap = Supported