From: Arran Cudbard-Bell Date: Tue, 26 Feb 2019 05:42:23 +0000 (+0800) Subject: Minor fixes in trie function X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=24ff207c36132effa843151f999ee4c6ceb8413c;p=thirdparty%2Ffreeradius-server.git Minor fixes in trie function - Data to insert should be marked as const - Callback should take keylen as size_t --- diff --git a/src/lib/io/master.c b/src/lib/io/master.c index a20c183c0c0..4f5d75c15ae 100644 --- a/src/lib/io/master.c +++ b/src/lib/io/master.c @@ -364,7 +364,7 @@ error: * are closed. The alternative is to walk through all connections * for each client, which would be a long time. */ -static int count_connections(void *ctx, UNUSED uint8_t const *key, UNUSED int keylen, void *data) +static int count_connections(void *ctx, UNUSED uint8_t const *key, UNUSED size_t keylen, void *data) { fr_io_client_t *client = data; int connections; diff --git a/src/lib/util/trie.c b/src/lib/util/trie.c index 6500a1fb57b..611ac8d5974 100644 --- a/src/lib/util/trie.c +++ b/src/lib/util/trie.c @@ -1901,7 +1901,7 @@ fr_trie_t *fr_trie_alloc(TALLOC_CTX *ctx) * - <0 on error * - 0 on success */ -int fr_trie_insert(fr_trie_t *ft, void const *key, size_t keylen, void *data) +int fr_trie_insert(fr_trie_t *ft, void const *key, size_t keylen, void const *data) { fr_trie_user_t *user; @@ -1923,7 +1923,7 @@ int fr_trie_insert(fr_trie_t *ft, void const *key, size_t keylen, void *data) user = talloc_zero(ft, fr_trie_user_t); if (!user) return -1; - user->data = data; + memcpy(&user->data, &data, sizeof(user->data)); user->number = ft->number++; if (fr_trie_key_insert(ft, ft, &ft->trie, key, 0, keylen, PUT_USER(user)) < 0) { diff --git a/src/lib/util/trie.h b/src/lib/util/trie.h index a61739c270a..d9f7294fb28 100644 --- a/src/lib/util/trie.h +++ b/src/lib/util/trie.h @@ -36,10 +36,10 @@ extern "C" { #include typedef struct fr_trie_t fr_trie_t; -typedef int (*fr_trie_walk_t)(void *ctx, uint8_t const *key, int keylen, void *data); +typedef int (*fr_trie_walk_t)(void *ctx, uint8_t const *key, size_t keylen, void *data); fr_trie_t *fr_trie_alloc(TALLOC_CTX *ctx); -int fr_trie_insert(fr_trie_t *ft, void const *key, size_t keylen, void *data) CC_HINT(nonnull); +int fr_trie_insert(fr_trie_t *ft, void const *key, size_t keylen, void const *data) CC_HINT(nonnull); void *fr_trie_lookup(fr_trie_t const *ft, void const *key, size_t keylen) CC_HINT(nonnull); void *fr_trie_match(fr_trie_t const *ft, void const *key, size_t keylen) CC_HINT(nonnull); void *fr_trie_remove(fr_trie_t *ft, void const *key, size_t keylen) CC_HINT(nonnull);