]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
use fr_htrie_match() API
authorAlan T. DeKok <aland@freeradius.org>
Mon, 26 Apr 2021 19:26:46 +0000 (15:26 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Mon, 26 Apr 2021 19:27:34 +0000 (15:27 -0400)
When we're rearranging the entries, we want to find entries which
are exact matches.  We don't want to do prefix lookups.

src/modules/rlm_files/rlm_files.c
src/tests/modules/files/prefix
src/tests/modules/files/prefix.unlang

index ba5d5d7beedb85dd94a86d0e703844d00e89f2ac..a7c831e84efbaeea030d14559c8113e8085e2383 100644 (file)
@@ -294,8 +294,10 @@ static int getusersfile(TALLOC_CTX *ctx, char const *filename, fr_htrie_t **ptre
                        goto error;
                }
 
-               user_list = fr_htrie_find(tree, &search_list);
-
+               /*
+                *      Find an exact match, especially for patricia tries.
+                */
+               user_list = fr_htrie_match(tree, &search_list);
                if (!user_list) {
                        user_list = talloc_zero(ctx, PAIR_LIST_LIST);
                        pairlist_list_init(user_list);
index 9c76c7b3ca374cebc5699f6d0e310cef69945c7e..1402f5b69f9f11b8ae6fea1b16bf87aed164f3bd 100644 (file)
@@ -9,4 +9,4 @@
        Reply-Message := "10/8 subnet"
 
 10.1.0.0/16    Password.Cleartext == "hello"
-       Reply-Message := "2nd 10.1/16 subnet"
+       Reply-Message += "2nd 10.1/16 subnet"
index fbd616070ed1c6714157804c7c6fa0130030c31e..89f5eaf87abf2b2034e9e5c99f976c6e576dd4c9 100644 (file)
@@ -4,12 +4,19 @@ update request {
 
 subnet
 
-if (&reply.Reply-Message != '10.1/16 subnet') {
+if (&reply.Reply-Message[0] != '10.1/16 subnet') {
        test_fail
 } else {
        test_pass
 }
 
+if (&reply.Reply-Message[1] != "2nd 10.1/16 subnet") {
+       test_fail
+} else {
+       test_pass
+}
+
+
 update request {
        &FreeRADIUS-Client-IP-Prefix := 10.2.3.4/32
 }
@@ -37,12 +44,6 @@ update reply {
 
 subnet
 
-if (&reply.Reply-Message != "2nd 10.1/16 subnet") {
-       test_fail
-} else {
-       test_pass
-}
-
 update request {
        &FreeRADIUS-Client-IP-Prefix := 192.168.1.1/32
 }