From: Alan T. DeKok Date: Sat, 9 Sep 2023 11:29:19 +0000 (-0400) Subject: switch encoders to use vp->vp_type X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c78fcf88786db69d14dc054846549fe9c033c2ac;p=thirdparty%2Ffreeradius-server.git switch encoders to use vp->vp_type because vp_type could be different from da->type in some cases --- diff --git a/src/bin/radsnmp.c b/src/bin/radsnmp.c index c9358de3fc7..405335d4bce 100644 --- a/src/bin/radsnmp.c +++ b/src/bin/radsnmp.c @@ -325,7 +325,7 @@ static ssize_t radsnmp_pair_from_oid(TALLOC_CTX *ctx, radsnmp_conf_t *conf, fr_d * fr_pair_ts with no value need a 1 byte value buffer. */ if (!value) { - switch (da->type) { + switch (vp->vp_type) { case FR_TYPE_OCTETS: fr_pair_value_memdup(vp, (uint8_t const *)"\0", 1, true); break; diff --git a/src/lib/eap_aka_sim/encode.c b/src/lib/eap_aka_sim/encode.c index f024427d0fa..eec1e477611 100644 --- a/src/lib/eap_aka_sim/encode.c +++ b/src/lib/eap_aka_sim/encode.c @@ -289,7 +289,7 @@ static ssize_t encode_value(fr_dbuff_t *dbuff, return PAIR_ENCODE_FATAL_ERROR; } - switch (da->type) { + switch (vp->vp_type) { case FR_TYPE_STRUCTURAL: fr_strerror_printf("%s: Called with structural type %s", __FUNCTION__, fr_type_to_str(da_stack->da[depth]->type)); @@ -375,7 +375,7 @@ static ssize_t encode_value(fr_dbuff_t *dbuff, break; } - switch (da->type) { + switch (vp->vp_type) { /* * In order to represent the string length properly we include a second * 16bit length field with the real string length. diff --git a/src/protocols/dhcpv6/encode.c b/src/protocols/dhcpv6/encode.c index b28133ce84c..7f8193eab44 100644 --- a/src/protocols/dhcpv6/encode.c +++ b/src/protocols/dhcpv6/encode.c @@ -118,7 +118,7 @@ static ssize_t encode_value(fr_dbuff_t *dbuff, return PAIR_ENCODE_FATAL_ERROR; } - switch (da->type) { + switch (vp->vp_type) { case FR_TYPE_TLV: case FR_TYPE_VENDOR: case FR_TYPE_VSA: @@ -126,12 +126,6 @@ static ssize_t encode_value(fr_dbuff_t *dbuff, fr_type_to_str(da->type)); return PAIR_ENCODE_FATAL_ERROR; - default: - break; - } - - - switch (da->type) { /* * 0 1 2 3 * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 diff --git a/src/protocols/dns/encode.c b/src/protocols/dns/encode.c index 7dad54b7e59..9b1e23b40e5 100644 --- a/src/protocols/dns/encode.c +++ b/src/protocols/dns/encode.c @@ -136,7 +136,7 @@ static ssize_t encode_value(fr_dbuff_t *dbuff, return PAIR_ENCODE_FATAL_ERROR; } - switch (da->type) { + switch (vp->vp_type) { case FR_TYPE_TLV: case FR_TYPE_VENDOR: case FR_TYPE_VSA: @@ -145,12 +145,6 @@ static ssize_t encode_value(fr_dbuff_t *dbuff, fr_type_to_str(da->type)); return PAIR_ENCODE_FATAL_ERROR; - default: - break; - } - - - switch (da->type) { case FR_TYPE_STRING: /* * DNS labels get a special encoder. @@ -189,10 +183,6 @@ static ssize_t encode_value(fr_dbuff_t *dbuff, */ break; - case FR_TYPE_GROUP: - fr_strerror_const("invalid data type - group"); - return PAIR_ENCODE_FATAL_ERROR; - /* * The value_box functions will take care of fixed-width * "string" and "octets" options. diff --git a/src/protocols/internal/encode.c b/src/protocols/internal/encode.c index 4dfb5164af4..29240906c42 100644 --- a/src/protocols/internal/encode.c +++ b/src/protocols/internal/encode.c @@ -74,7 +74,7 @@ static ssize_t internal_encode(fr_dbuff_t *dbuff, fr_assert(!da->flags.name_only); - switch (da->type) { + switch (vp->vp_type) { /* * Only leaf attributes can be tainted */ @@ -126,7 +126,7 @@ static ssize_t internal_encode(fr_dbuff_t *dbuff, value_dbuff = FR_DBUFF_BIND_CURRENT(&work_dbuff); fr_dbuff_marker(&value_field, &value_dbuff); - switch (da->type) { + switch (vp->vp_type) { case FR_TYPE_LEAF: slen = fr_value_box_to_network(&value_dbuff, &vp->data); if (slen < 0) return PAIR_ENCODE_FATAL_ERROR; diff --git a/src/protocols/radius/encode.c b/src/protocols/radius/encode.c index 587f7575251..aa63640349b 100644 --- a/src/protocols/radius/encode.c +++ b/src/protocols/radius/encode.c @@ -424,7 +424,7 @@ static ssize_t encode_value(fr_dbuff_t *dbuff, fr_dbuff_marker(&src, &value_dbuff); fr_dbuff_marker(&dest, &value_dbuff); - switch (da->type) { + switch (vp->vp_type) { /* * IPv4 addresses are normal, but IPv6 addresses are special to RADIUS. */