From: Alan T. DeKok Date: Tue, 15 Nov 2016 20:16:10 +0000 (-0500) Subject: use union.datum as a generic pointer X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a3d9cfbef1ac2781927aaae8a09097d924b6fa45;p=thirdparty%2Ffreeradius-server.git use union.datum as a generic pointer --- diff --git a/src/include/pair.h b/src/include/pair.h index 10350656ca7..4099739fbb3 100644 --- a/src/include/pair.h +++ b/src/include/pair.h @@ -67,7 +67,7 @@ struct value_data { value_data_t *next; //!< Next in a series of value_data. union { - uint8_t data; //!< so we can refer to a FIELD and not to a UNION + uint8_t datum; //!< so we can refer to a FIELD and not to a UNION char const *strvalue; //!< Pointer to UTF-8 string. uint8_t const *octets; //!< Pointer to binary string. diff --git a/src/lib/radius_encode.c b/src/lib/radius_encode.c index 5b62928913b..0963f53a707 100644 --- a/src/lib/radius_encode.c +++ b/src/lib/radius_encode.c @@ -448,7 +448,7 @@ ssize_t fr_radius_encode_value_hton(uint8_t *out, size_t outlen, VALUE_PAIR cons case PW_TYPE_ABINARY: case PW_TYPE_ETHERNET: case PW_TYPE_COMBO_IP_ADDR: - memcpy(out, &vp->data.data, outlen); + memcpy(out, &vp->data.datum, outlen); break; case PW_TYPE_BOOLEAN: diff --git a/src/lib/value.c b/src/lib/value.c index a2a85a07a45..c351f020512 100644 --- a/src/lib/value.c +++ b/src/lib/value.c @@ -1200,7 +1200,8 @@ void value_data_hton(value_data_t *dst, PW_TYPE type, void const *src, size_t sr return; /* shouldn't happen */ default: - memcpy(dst, src, src_len); + memcpy(&dst->datum, src, src_len); + break; } } @@ -1240,8 +1241,8 @@ int value_data_cast(TALLOC_CTX *ctx, value_data_t *dst, * Converts the src data to octets with no processing. */ if (dst_type == PW_TYPE_OCTETS) { - value_data_hton(dst, src_type, &src->data, src->length); - dst->octets = talloc_memdup(ctx, dst, src->length); + value_data_hton(dst, src_type, &src->datum, src->length); + dst->octets = talloc_memdup(ctx, &dst->datum, src->length); dst->length = src->length; talloc_set_type(dst->octets, uint8_t); return 0; @@ -1656,7 +1657,7 @@ int value_data_cast(TALLOC_CTX *ctx, value_data_t *dst, dst->integer = htonl(src->ipaddr.s_addr); } else { /* they're of the same byte order */ - memcpy(&dst, &src, src->length); + memcpy(&dst->datum, &src->datum, src->length); } dst->length = src->length; diff --git a/src/main/map.c b/src/main/map.c index b2488e3b7c9..931934a6188 100644 --- a/src/main/map.c +++ b/src/main/map.c @@ -142,7 +142,7 @@ bool map_cast_from_hex(vp_map_t *map, FR_TOKEN rhs_type, char const *rhs) map->rhs->quote = T_BARE_WORD; } } else { - memcpy(&map->rhs->tmpl_data_value, &vp->data.data, sizeof(map->rhs->tmpl_data_value)); + memcpy(&map->rhs->tmpl_data_value, &vp->data.datum, sizeof(map->rhs->tmpl_data_value)); map->rhs->quote = T_BARE_WORD; } map->rhs->name = fr_pair_value_asprint(map->rhs, vp, fr_token_quote[map->rhs->quote]); diff --git a/src/modules/rlm_eap/lib/sim/sim_proto.c b/src/modules/rlm_eap/lib/sim/sim_proto.c index c79588c502f..63f37576248 100644 --- a/src/modules/rlm_eap/lib/sim/sim_proto.c +++ b/src/modules/rlm_eap/lib/sim/sim_proto.c @@ -938,7 +938,7 @@ ssize_t fr_sim_encode(REQUEST *request, fr_dict_attr_t const *parent, uint8_t ty { value_data_t data; - value_data_hton(&data, vp->da->type, &vp->data.data, vp->vp_length); + value_data_hton(&data, vp->da->type, &vp->data.datum, vp->vp_length); memcpy(&p[2], &data, vp->vp_length); } @@ -948,7 +948,7 @@ ssize_t fr_sim_encode(REQUEST *request, fr_dict_attr_t const *parent, uint8_t ty * to limit to the types of the IANA registered attributes. */ default: - memcpy(&p[2], &vp->data.data, vp->vp_length); + memcpy(&p[2], &vp->data.datum, vp->vp_length); break; } diff --git a/src/modules/rlm_sometimes/rlm_sometimes.c b/src/modules/rlm_sometimes/rlm_sometimes.c index 93be3746cfe..09c06125600 100644 --- a/src/modules/rlm_sometimes/rlm_sometimes.c +++ b/src/modules/rlm_sometimes/rlm_sometimes.c @@ -84,7 +84,7 @@ static rlm_rcode_t sometimes_return(void const *instance, REQUEST *request, RADI tmpl_find_vp(&vp, request, inst->key); if (!vp) return RLM_MODULE_NOOP; - hash = fr_hash(&vp->data.data, vp->vp_length); + hash = fr_hash(&vp->data.datum, vp->vp_length); hash &= 0xff; /* ensure it's 0..255 */ value = hash;