From: Alan T. DeKok Date: Thu, 17 Mar 2022 22:50:53 +0000 (-0400) Subject: we don't need element_len here X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=eb3e736e9a7baee87e87882a52997094dd73a916;p=thirdparty%2Ffreeradius-server.git we don't need element_len here just trust encode_value(), and da->flags.length --- diff --git a/src/protocols/dhcpv4/encode.c b/src/protocols/dhcpv4/encode.c index f23042aeaed..6a88d6d3aa8 100644 --- a/src/protocols/dhcpv4/encode.c +++ b/src/protocols/dhcpv4/encode.c @@ -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); } /* diff --git a/src/protocols/dhcpv6/encode.c b/src/protocols/dhcpv6/encode.c index 57885eabb37..76fa0f27d59 100644 --- a/src/protocols/dhcpv6/encode.c +++ b/src/protocols/dhcpv6/encode.c @@ -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); } /*