From: Alan T. DeKok Date: Fri, 19 Jun 2015 16:15:21 +0000 (-0400) Subject: The default printing for attributes is double quotes. X-Git-Tag: release_3_0_9~115 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a2594833b491e67c4850098aaade4212645915b7;p=thirdparty%2Ffreeradius-server.git The default printing for attributes is double quotes. 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... --- diff --git a/src/lib/print.c b/src/lib/print.c index 3c24a1c8f53..efa240fcae8 100644 --- a/src/lib/print.c +++ b/src/lib/print.c @@ -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; diff --git a/src/tests/keywords/pairs b/src/tests/keywords/pairs index a829c6dd495..4230c57a725 100644 --- a/src/tests/keywords/pairs +++ b/src/tests/keywords/pairs @@ -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' } diff --git a/src/tests/unit/extended.txt b/src/tests/unit/extended.txt index abddb63a4d4..8b0e3a2c433 100644 --- a/src/tests/unit/extended.txt +++ b/src/tests/unit/extended.txt @@ -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 diff --git a/src/tests/unit/rfc.txt b/src/tests/unit/rfc.txt index 21d3e5270ab..e8c37b9d3c3 100644 --- a/src/tests/unit/rfc.txt +++ b/src/tests/unit/rfc.txt @@ -74,14 +74,14 @@ # 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. diff --git a/src/tests/unit/vendor.txt b/src/tests/unit/vendor.txt index f54e429fc9b..42b77d61745 100644 --- a/src/tests/unit/vendor.txt +++ b/src/tests/unit/vendor.txt @@ -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 = ...' diff --git a/src/tests/unit/wimax.txt b/src/tests/unit/wimax.txt index b59df797a96..191b37e25d8 100644 --- a/src/tests/unit/wimax.txt +++ b/src/tests/unit/wimax.txt @@ -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