From: Alan T. DeKok Date: Fri, 13 Apr 2018 19:55:13 +0000 (-0400) Subject: don't pass a "free" function X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=54a7fa135ef538c0a2ab83f04ee6249ca437fe69;p=thirdparty%2Ffreeradius-server.git don't pass a "free" function the stats info is parented from the rbtree, so using a free function results in a double free. --- diff --git a/src/modules/rlm_stats/rlm_stats.c b/src/modules/rlm_stats/rlm_stats.c index 3d17bc495b6..855457a87b5 100644 --- a/src/modules/rlm_stats/rlm_stats.c +++ b/src/modules/rlm_stats/rlm_stats.c @@ -349,14 +349,6 @@ static int data_cmp(const void *one, const void *two) return fr_ipaddr_cmp(&a->ipaddr, &b->ipaddr); } -static void data_free(void *one) -{ - rlm_stats_data_t *a = one; - - talloc_free(a); -} - - /** Instantiate thread data for the submodule. * */ @@ -373,8 +365,8 @@ static int mod_thread_instantiate(UNUSED CONF_SECTION const *cs, void *instance, pthread_mutex_init(&t->src_mutex, NULL); pthread_mutex_init(&t->dst_mutex, NULL); #endif - t->src = rbtree_talloc_create(t, data_cmp, rlm_stats_data_t, data_free, RBTREE_FLAG_NONE); - t->dst = rbtree_talloc_create(t, data_cmp, rlm_stats_data_t, data_free, RBTREE_FLAG_NONE); + t->src = rbtree_talloc_create(t, data_cmp, rlm_stats_data_t, NULL, RBTREE_FLAG_NONE); + t->dst = rbtree_talloc_create(t, data_cmp, rlm_stats_data_t, NULL, RBTREE_FLAG_NONE); PTHREAD_MUTEX_LOCK(&inst->mutex); fr_dlist_insert_head(&inst->entry, &t->entry);