]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Use talloc get type abort for safety...
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Tue, 14 May 2024 02:40:24 +0000 (20:40 -0600)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Tue, 14 May 2024 02:40:24 +0000 (20:40 -0600)
src/lib/io/network.c
src/listen/detail/proto_detail_work.c

index 66ad552cb4b9d98166fcf4e7cb83f01472261705..632cb0ae190ad5c6e59f5edc83d3876f984da748 100644 (file)
@@ -1292,14 +1292,14 @@ static int _network_socket_free(fr_network_socket_t *s)
  */
 static void fr_network_listen_callback(void *ctx, void const *data, size_t data_size, UNUSED fr_time_t now)
 {
-       fr_network_t            *nr = ctx;
+       fr_network_t            *nr = talloc_get_type_abort(ctx, fr_network_t);
        fr_listen_t             *li;
 
        fr_assert(data_size == sizeof(li));
 
        if (data_size != sizeof(li)) return;
 
-       memcpy(&li, data, sizeof(li));
+       li = talloc_get_type_abort(*((void * const *)data), fr_listen_t);
 
        (void) fr_network_listen_add_self(nr, li);
 }
@@ -1420,8 +1420,8 @@ static int fr_network_listen_add_self(fr_network_t *nr, fr_listen_t *li)
 static void fr_network_directory_callback(void *ctx, void const *data, size_t data_size, UNUSED fr_time_t now)
 {
        int                     num_messages;
-       fr_network_t            *nr = ctx;
-       fr_listen_t             *li;
+       fr_network_t            *nr = talloc_get_type_abort(ctx, fr_network_t);
+       fr_listen_t             *li = talloc_get_type_abort(*((void * const *)data), fr_listen_t);
        fr_network_socket_t     *s;
        fr_app_io_t const       *app_io;
        fr_event_vnode_func_t   funcs = { .extend = fr_network_vnode_extend };
index f2a5a39a9f5dccc34d100609e3897a337af12b40..7bbaf09231b18dc842639349c15e39cd2d446248 100644 (file)
@@ -116,7 +116,7 @@ static int mod_decode(void const *instance, request_t *request, UNUSED uint8_t *
 {
 
        proto_detail_work_t const       *inst = talloc_get_type_abort_const(instance, proto_detail_work_t);
-       fr_detail_entry_t const         *track = request->async->packet_ctx;
+       fr_detail_entry_t const         *track = talloc_get_type_abort_const(request->async->packet_ctx, fr_detail_entry_t);
        fr_pair_t *vp;
 
        request->client = inst->client;