From: Alan T. DeKok Date: Fri, 8 Sep 2017 00:04:50 +0000 (-0400) Subject: more stupid const const stupid X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1368dd7ea58e2e441c3261dd6e7ae449a43756d1;p=thirdparty%2Ffreeradius-server.git more stupid const const stupid --- diff --git a/src/include/talloc.h b/src/include/talloc.h index 8a9bc214a36..af4645c5c4f 100644 --- a/src/include/talloc.h +++ b/src/include/talloc.h @@ -41,4 +41,15 @@ void **talloc_array_null_terminate(void **array); void **talloc_array_null_strip(void **array); +/* + * talloc portability issues. 'const' is not part of the talloc + * type, but it is part of the pointer type. But only if + * talloc_get_type_abort() is just a cast. + */ +#ifndef NDEBUG +#define talloc_get_type_abort_const talloc_get_type_abort +#else +#define talloc_get_type_abort_const(ptr, type) (const type *)(ptr) +#endif + #endif diff --git a/src/lib/util/dict.c b/src/lib/util/dict.c index c9f6616b023..33b2f03c0ef 100644 --- a/src/lib/util/dict.c +++ b/src/lib/util/dict.c @@ -4323,9 +4323,7 @@ void fr_dict_verify(char const *file, int line, fr_dict_attr_t const *da) if (!fr_cond_assert(0)) fr_exit_now(1); } -#ifndef NDEBUG - (void) talloc_get_type_abort(da, fr_dict_attr_t); -#endif + (void) talloc_get_type_abort_const(da, fr_dict_attr_t); if ((!da->flags.is_root) && (da->depth == 0)) { FR_FAULT_LOG("CONSISTENCY CHECK FAILED %s[%u]: fr_dict_attr_t %s vendor: %i, attr %i: " @@ -4343,11 +4341,9 @@ void fr_dict_verify(char const *file, int line, fr_dict_attr_t const *da) if (!fr_cond_assert(0)) fr_exit_now(1); } -#ifndef NDEBUG for (da_p = da; da_p; da_p = da_p->next) { - (void) talloc_get_type_abort(da_p, fr_dict_attr_t); + (void) talloc_get_type_abort_const(da_p, fr_dict_attr_t); } -#endif for (i = da->depth, da_p = da; (i >= 0) && da; i--, da_p = da_p->parent) { if (i != (int)da_p->depth) { diff --git a/src/lib/util/pair.c b/src/lib/util/pair.c index 43730e8d0f8..6366cab296f 100644 --- a/src/lib/util/pair.c +++ b/src/lib/util/pair.c @@ -2650,9 +2650,7 @@ inline void fr_pair_verify(char const *file, int line, VALUE_PAIR const *vp) if (!fr_cond_assert(0)) fr_exit_now(1); } -#ifndef NDEBUG - (void) talloc_get_type_abort(vp, VALUE_PAIR); -#endif + (void) talloc_get_type_abort_const(vp, VALUE_PAIR); if (!vp->da) { FR_FAULT_LOG("CONSISTENCY CHECK FAILED %s[%u]: VALUE_PAIR da pointer was NULL", file, line); @@ -2765,9 +2763,7 @@ inline void fr_pair_verify(char const *file, int line, VALUE_PAIR const *vp) } if (vp->da->flags.is_unknown) { -#ifndef NDEBUG - (void) talloc_get_type_abort(vp->da, fr_dict_attr_t); -#endif + (void) talloc_get_type_abort_const(vp->da, fr_dict_attr_t); } else { fr_dict_attr_t const *da; diff --git a/src/lib/util/value.c b/src/lib/util/value.c index 5fdcec0f7a4..42fec15dc6d 100644 --- a/src/lib/util/value.c +++ b/src/lib/util/value.c @@ -2524,9 +2524,7 @@ int fr_value_box_strdup_buffer_shallow(TALLOC_CTX *ctx, fr_value_box_t *dst, fr_ { size_t len; -#ifndef NDEBUG - (void) talloc_get_type_abort(src, char); -#endif + (void) talloc_get_type_abort_const(src, char); len = talloc_array_length(src); if ((len == 1) || (src[len - 1] != '\0')) { @@ -2621,9 +2619,7 @@ int fr_value_box_memsteal(TALLOC_CTX *ctx, fr_value_box_t *dst, fr_dict_attr_t c { uint8_t const *bin; -#ifndef NDEBUG - (void) talloc_get_type_abort(src, uint8_t); -#endif + (void) talloc_get_type_abort_const(src, uint8_t); bin = talloc_steal(ctx, src); if (!bin) { diff --git a/src/modules/proto_radius/proto_radius.c b/src/modules/proto_radius/proto_radius.c index 4209d5a8538..fd167b0e9c8 100644 --- a/src/modules/proto_radius/proto_radius.c +++ b/src/modules/proto_radius/proto_radius.c @@ -166,7 +166,7 @@ static int transport_parse(TALLOC_CTX *ctx, void *out, CONF_ITEM *ci, UNUSED CON */ static int mod_decode(void const *instance, REQUEST *request, uint8_t *const data, size_t data_len) { - proto_radius_t const *inst = talloc_get_type_abort(instance, proto_radius_t); + proto_radius_t const *inst = talloc_get_type_abort_const(instance, proto_radius_t); RADCLIENT *client; rad_assert(data[0] < FR_MAX_PACKET_CODE); @@ -205,7 +205,7 @@ static ssize_t mod_encode(void const *instance, REQUEST *request, uint8_t *buffe { size_t len; - proto_radius_t const *inst = talloc_get_type_abort(instance, proto_radius_t); + proto_radius_t const *inst = talloc_get_type_abort_const(instance, proto_radius_t); RADCLIENT *client; /* @@ -244,7 +244,7 @@ static ssize_t mod_encode(void const *instance, REQUEST *request, uint8_t *buffe static void mod_process_set(void const *instance, REQUEST *request) { - proto_radius_t const *inst = talloc_get_type_abort(instance, proto_radius_t); + proto_radius_t const *inst = talloc_get_type_abort_const(instance, proto_radius_t); fr_io_process_t process; rad_assert(request->packet->code != 0); @@ -419,7 +419,7 @@ static int mod_bootstrap(void *instance, CONF_SECTION *conf) * Bootstrap the process modules */ while ((cp = cf_pair_find_next(conf, cp, "type"))) { - dl_t const *module = talloc_get_type_abort(inst->process_submodule[i]->module, dl_t); + dl_t const *module = talloc_get_type_abort_const(inst->process_submodule[i]->module, dl_t); fr_app_process_t const *app_process = (fr_app_process_t const *)module->common; if (app_process->bootstrap && (app_process->bootstrap(inst->process_submodule[i]->data, diff --git a/src/modules/proto_radius/proto_radius_udp.c b/src/modules/proto_radius/proto_radius_udp.c index 6ec418fdd55..f83d2f2492f 100644 --- a/src/modules/proto_radius/proto_radius_udp.c +++ b/src/modules/proto_radius/proto_radius_udp.c @@ -182,7 +182,7 @@ static uint32_t priorities[FR_MAX_PACKET_CODE] = { static ssize_t mod_read(void const *instance, void **packet_ctx, fr_time_t **recv_time, uint8_t *buffer, size_t buffer_len, size_t *leftover, uint32_t *priority) { - proto_radius_udp_t const *inst = talloc_get_type_abort(instance, proto_radius_udp_t); + proto_radius_udp_t const *inst = talloc_get_type_abort_const(instance, proto_radius_udp_t); ssize_t data_size; size_t packet_len; diff --git a/src/modules/rlm_radius/rlm_radius.c b/src/modules/rlm_radius/rlm_radius.c index 832e8019f6a..d6a491836a8 100644 --- a/src/modules/rlm_radius/rlm_radius.c +++ b/src/modules/rlm_radius/rlm_radius.c @@ -376,7 +376,7 @@ static int mod_link_free(rlm_radius_link_t *link) static void mod_radius_signal(REQUEST *request, void *instance, void *thread, void *ctx, fr_state_action_t action) { - rlm_radius_t const *inst = talloc_get_type_abort(instance, rlm_radius_t); + rlm_radius_t const *inst = talloc_get_type_abort_const(instance, rlm_radius_t); rlm_radius_thread_t *t = talloc_get_type_abort(thread, rlm_radius_thread_t); rlm_radius_link_t *link = talloc_get_type_abort(ctx, rlm_radius_link_t); diff --git a/src/modules/rlm_radius/rlm_radius_udp.c b/src/modules/rlm_radius/rlm_radius_udp.c index 028d24e3378..250a95de1e5 100644 --- a/src/modules/rlm_radius/rlm_radius_udp.c +++ b/src/modules/rlm_radius/rlm_radius_udp.c @@ -186,8 +186,8 @@ static void mod_clear_backlog(rlm_radius_udp_thread_t *t); static int conn_cmp(void const *one, void const *two) { - rlm_radius_udp_connection_t const *a = talloc_get_type_abort(one, rlm_radius_udp_connection_t); - rlm_radius_udp_connection_t const *b = talloc_get_type_abort(two, rlm_radius_udp_connection_t); + rlm_radius_udp_connection_t const *a = talloc_get_type_abort_const(one, rlm_radius_udp_connection_t); + rlm_radius_udp_connection_t const *b = talloc_get_type_abort_const(two, rlm_radius_udp_connection_t); if (timercmp(&a->mrs_time, &b->mrs_time, <)) return -1; if (timercmp(&a->mrs_time, &b->mrs_time, >)) return +1;