]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
now that the decoder is fixed, fix the encoder
authorAlan T. DeKok <aland@freeradius.org>
Sat, 12 Mar 2022 15:21:10 +0000 (10:21 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Sat, 12 Mar 2022 15:21:10 +0000 (10:21 -0500)
so that it mashes the values together

src/protocols/dhcpv4/encode.c
src/tests/unit/protocols/dhcpv4/base.txt

index 5b8076ecb0bf5724b75c12403f6d05b7f67a6f3d..c907e4051ae85637ae63e10bf7f806396363237f 100644 (file)
@@ -191,13 +191,6 @@ static ssize_t encode_array(fr_dbuff_t *dbuff,
                        FR_DBUFF_ADVANCE_RETURN(&element_dbuff, sizeof(uint8_t));       /* Make room for the length field */
                }
 
-               /*
-                *      Don't pack too many things in.
-                *
-                *      @todo - fix dhcpv4 decode, because the elements can, in fact, cross option boundaries.
-                */
-               if ((fr_dbuff_used(&work_dbuff) + element_len + len_field) > 255) break;
-
                slen = encode_value(&element_dbuff, da_stack, depth, cursor, encode_ctx);
                if (slen < 0) return slen;
                if (slen > UINT8_MAX) return PAIR_ENCODE_FATAL_ERROR;
index 79acbc62853e7bfd350f0b11606c0f9f71e224bb..51ebb560c48873d38cdb06b8572259fb0fa15d5e 100644 (file)
@@ -34,7 +34,7 @@ match 8a 08 7f 00 00 01 c0 a8 03 01
 # Overflow with multiple fixed length attributes (16x16)
 encode-pair ANDSF-IPv6-Address = fe80::1, ANDSF-IPv6-Address = fe80::2, ANDSF-IPv6-Address = fe80::3, ANDSF-IPv6-Address = fe80::4, ANDSF-IPv6-Address = fe80::5, ANDSF-IPv6-Address = fe80::6, ANDSF-IPv6-Address = fe80::7, ANDSF-IPv6-Address = fe80::8, ANDSF-IPv6-Address = fe80::9, ANDSF-IPv6-Address = fe80::a, ANDSF-IPv6-Address = fe80::b, ANDSF-IPv6-Address = fe80::c, ANDSF-IPv6-Address = fe80::d, ANDSF-IPv6-Address = fe80::e, ANDSF-IPv6-Address = fe80::f, ANDSF-IPv6-Address = fe80::10
 
-match 8f f0 fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 01 fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 02 fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 03 fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 04 fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 05 fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 06 fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 07 fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 08 fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 09 fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 0a fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 0b fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 0c fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 0d fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 0e fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 0f 8f 10 fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 10
+match 8f ff fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 01 fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 02 fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 03 fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 04 fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 05 fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 06 fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 07 fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 08 fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 09 fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 0a fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 0b fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 0c fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 0d fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 0e fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 0f fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 8f 01 10
 
 decode-pair -
 match ANDSF-IPv6-Address = fe80::1, ANDSF-IPv6-Address = fe80::2, ANDSF-IPv6-Address = fe80::3, ANDSF-IPv6-Address = fe80::4, ANDSF-IPv6-Address = fe80::5, ANDSF-IPv6-Address = fe80::6, ANDSF-IPv6-Address = fe80::7, ANDSF-IPv6-Address = fe80::8, ANDSF-IPv6-Address = fe80::9, ANDSF-IPv6-Address = fe80::a, ANDSF-IPv6-Address = fe80::b, ANDSF-IPv6-Address = fe80::c, ANDSF-IPv6-Address = fe80::d, ANDSF-IPv6-Address = fe80::e, ANDSF-IPv6-Address = fe80::f, ANDSF-IPv6-Address = fe80::10