* attribute.
*/
for (i = 0, p = data; i < values; i++) {
+ fr_assert((p + value_len) <= (data + data_len));
len = decode_value_internal(ctx, cursor, parent, p, value_len);
if (len <= 0) return len;
if (len != (ssize_t)value_len) goto raw;
FR_PROTO_TRACE("decode context %s -> %s", parent->name, vendor->name);
option_len = p[0];
- if ((p + option_len) > end) {
+ if ((p + 1 + option_len) > end) {
len = decode_raw(ctx, cursor, vendor, p[1], p, end - p);
if (len < 0) return len;
encode-pair V-I-Vendor-Specific.ADSL-Forum.Manufacturer-OUI = 0x01, V-I-Vendor-Specific.ADSL-Forum.Device-Serial-Number = 0x02, V-I-Vendor-Specific.ADSL-Forum.Device-Product-Class = 0x03
match 7d 0e 00 00 0d e9 09 01 01 01 02 01 02 03 01 03
+#
+# PEN + option_len, where option_len 09 > end of attribute
+#
+decode-pair 7d 0d 00 00 00 09 09 05 06 61 61 2e 74 78 74
+match raw.V-I-Vendor-Specific.Cisco.5 = 0x08050661612e747874
+
count
-match 12
+match 14