From: Arran Cudbard-Bell Date: Thu, 18 Apr 2019 21:19:31 +0000 (-0400) Subject: Fix dl_instance_find to take a const data pointer X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=587ebeabf749ca3c4305e1a0d096bfe00d562fdb;p=thirdparty%2Ffreeradius-server.git Fix dl_instance_find to take a const data pointer --- diff --git a/src/lib/server/dl.c b/src/lib/server/dl.c index eea9ace15d4..7f9239208bf 100644 --- a/src/lib/server/dl.c +++ b/src/lib/server/dl.c @@ -488,13 +488,15 @@ void dl_symbol_free_cb_unregister(char const *symbol, dl_free_t func) /** Lookup a dl_instance_t via instance data * */ -dl_instance_t const *dl_instance_find(void *data) +dl_instance_t const *dl_instance_find(void const *data) { - dl_instance_t find = { .data = data }; + void *mutable; DL_INIT_CHECK; - return rbtree_finddata(dl_loader->inst_tree, &find); + memcpy(&mutable, &data, sizeof(mutable)); + + return rbtree_finddata(dl_loader->inst_tree, &(dl_instance_t){ .data = mutable }); } /** Allocate module instance data, and parse the module's configuration diff --git a/src/lib/server/dl.h b/src/lib/server/dl.h index 02c8baa46f6..1ccfe2dbc07 100644 --- a/src/lib/server/dl.h +++ b/src/lib/server/dl.h @@ -195,7 +195,7 @@ void *dl_by_name(char const *name); dl_t const *dl_module(CONF_SECTION *conf, dl_t const *parent, char const *name, dl_type_t type); -dl_instance_t const *dl_instance_find(void *data); +dl_instance_t const *dl_instance_find(void const *data); void *dl_instance_symbol(dl_instance_t const *instance, char const *sym_name);