]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
we don't need element_len here
authorAlan T. DeKok <aland@freeradius.org>
Thu, 17 Mar 2022 22:50:53 +0000 (18:50 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Fri, 18 Mar 2022 13:16:26 +0000 (09:16 -0400)
just trust encode_value(), and da->flags.length

src/protocols/dhcpv4/encode.c
src/protocols/dhcpv6/encode.c

index f23042aeaedb8b6152612c20f4ef0c3b64408af7..6a88d6d3aa87b7c1b90382333dbf76556b1645ea 100644 (file)
@@ -185,7 +185,6 @@ static ssize_t encode_array(fr_dbuff_t *dbuff,
                                   fr_dcursor_t *cursor, fr_dhcpv4_ctx_t *encode_ctx)
 {
        ssize_t                 slen;
-       size_t                  element_len;
        fr_dbuff_t              work_dbuff = FR_DBUFF(dbuff);
        fr_pair_t               *vp;
        fr_dict_attr_t const    *da = da_stack->da[depth];
@@ -221,8 +220,6 @@ static ssize_t encode_array(fr_dbuff_t *dbuff,
                bool            len_field = false;
                fr_dbuff_t      element_dbuff = FR_DBUFF(&work_dbuff);
 
-               element_len = fr_dhcpv4_option_len(fr_dcursor_current(cursor));
-
                /*
                 *      If the data is variable length i.e. strings or octets
                 *      we need to include an 8-bit length field before each element.
@@ -241,8 +238,8 @@ static ssize_t encode_array(fr_dbuff_t *dbuff,
                 *      This is mainly for fixed length octets type attributes
                 *      containing one or more keys.
                 */
-               if (da->flags.length && (size_t)slen < element_len) {
-                       FR_DBUFF_MEMSET_RETURN(&element_dbuff, 0, element_len - slen);
+               if (da->flags.length && (size_t)slen < da->flags.length) {
+                       FR_DBUFF_MEMSET_RETURN(&element_dbuff, 0, da->flags.length - slen);
                }
 
                /*
index 57885eabb37dff93d87a87671ae622ebc9168859..76fa0f27d595f3a8e2a61adb21622723bbcf5158 100644 (file)
@@ -393,7 +393,6 @@ static inline ssize_t encode_array(fr_dbuff_t *dbuff,
                                   fr_dcursor_t *cursor, void *encode_ctx)
 {
        ssize_t                 slen;
-       size_t                  element_len;
        fr_dbuff_t              work_dbuff = FR_DBUFF(dbuff);
        fr_pair_t               *vp;
        fr_dict_attr_t const    *da = da_stack->da[depth];
@@ -430,8 +429,6 @@ static inline ssize_t encode_array(fr_dbuff_t *dbuff,
                bool            len_field = false;
                fr_dbuff_t      element_dbuff = FR_DBUFF(&work_dbuff);
 
-               element_len = fr_dhcpv6_option_len(fr_dcursor_current(cursor));
-
                /*
                 *      If the data is variable length i.e. strings or octets
                 *      we need to include a length field before each element.
@@ -453,8 +450,8 @@ static inline ssize_t encode_array(fr_dbuff_t *dbuff,
                 *      This is mainly for fixed length octets type attributes
                 *      containing one or more keys.
                 */
-               if (da->flags.length && (size_t)slen < element_len) {
-                       FR_DBUFF_MEMSET_RETURN(&element_dbuff, 0, element_len - slen);
+               if (da->flags.length && (size_t)slen < da->flags.length) {
+                       FR_DBUFF_MEMSET_RETURN(&element_dbuff, 0, da->flags.length - slen);
                }
 
                /*