]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Minor fixes in trie function
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Tue, 26 Feb 2019 05:42:23 +0000 (13:42 +0800)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Tue, 26 Feb 2019 07:07:51 +0000 (15:07 +0800)
- Data to insert should be marked as const
- Callback should take keylen as size_t

src/lib/io/master.c
src/lib/util/trie.c
src/lib/util/trie.h

index a20c183c0c0816224625572c096054ba98e3417f..4f5d75c15ae49b7c9b5791973a0f2526bf5893b0 100644 (file)
@@ -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;
index 6500a1fb57b0da6d11a41399e7f3dc70906908af..611ac8d597459e71089fbf2d5afd4567645e8fc8 100644 (file)
@@ -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) {
index a61739c270a4d0b32d4dab3bb7e27319dfdfb269..d9f7294fb2894ca7e5eecd17e763e2b600b2b85b 100644 (file)
@@ -36,10 +36,10 @@ extern "C" {
 #include <talloc.h>
 
 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);