]> git.ipfire.org Git - thirdparty/freeradius-server.git/log
thirdparty/freeradius-server.git
8 days agoraddb: document rlm_rest response json {} and post {} subsections
Arran Cudbard-Bell [Sat, 25 Jul 2026 17:24:45 +0000 (11:24 -0600)] 
raddb: document rlm_rest response json {} and post {} subsections

The response returned by a REST API is a policy evaluated by the
server.  Expansion of values in responses is now disabled by default,
and should only be enabled where the API validates or escapes
untrusted input echoed back in the policy it returns.

Notes that configurations migrated from v3, where expansion was
enabled by default, must set do_xlat = yes if they rely on it.

8 days agorlm_rest: add response json {} and post {} config subsections
Arran Cudbard-Bell [Sat, 25 Jul 2026 17:22:51 +0000 (11:22 -0600)] 
rlm_rest: add response json {} and post {} config subsections

json { do_xlat, is_json } sets the defaults for the matching
per-attribute flags in JSON responses.  post { do_xlat } controls
xlat expansion of values in POST responses, which was previously
unconditional.

Unlike v3, do_xlat defaults to no.  The REST API must opt in to
expansion, either per decoder in the config, or with the
per-attribute do_xlat flag, which overrides the configured default
in both directions.

9 days agoload all subdirectories, so we don't have to manually list them
Alan T. DeKok [Fri, 24 Jul 2026 15:25:06 +0000 (17:25 +0200)] 
load all subdirectories, so we don't have to manually list them

10 days ago%log.destination() doesn't _require_ a file.
Alan T. DeKok [Thu, 23 Jul 2026 11:29:15 +0000 (13:29 +0200)] 
%log.destination() doesn't _require_ a file.

10 days agoword wrap log documentation
Alan T. DeKok [Thu, 23 Jul 2026 11:22:56 +0000 (13:22 +0200)] 
word wrap log documentation

10 days agouse consistent names and macros
Alan T. DeKok [Thu, 23 Jul 2026 10:56:36 +0000 (12:56 +0200)] 
use consistent names and macros

11 days agoradtest: allow overriding NAS name via HOSTNAME env var (#5901)
Alexandru Ardelean [Wed, 22 Jul 2026 15:54:02 +0000 (18:54 +0300)] 
radtest: allow overriding NAS name via HOSTNAME env var (#5901)

Use HOSTNAME when set, retaining the portable hostname/uname fallback.

Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
12 days agodocs-v4: remove duplicate dictionary info from the dictionary tutorial. `xrefs` used...
nolade [Mon, 20 Jul 2026 18:01:11 +0000 (14:01 -0400)] 
docs-v4: remove duplicate dictionary info from the dictionary tutorial. `xrefs` used in tutorial to guide user to reference files including the relevant configuration files.

12 days agofix typos in doxygen descriptions
Alan T. DeKok [Mon, 20 Jul 2026 07:44:24 +0000 (09:44 +0200)] 
fix typos in doxygen descriptions

12 days agoremove duplicated code
Alan T. DeKok [Fri, 17 Jul 2026 13:19:15 +0000 (09:19 -0400)] 
remove duplicated code

2 weeks agorlm_ldap: add profile child_rdn
Arran Cudbard-Bell [Fri, 17 Jul 2026 22:24:43 +0000 (18:24 -0400)] 
rlm_ldap: add profile child_rdn

The RDN is expanded at request time and joined to the front of every profile DN, selecting a child object of each profile. An expansion producing nothing leaves the profile DNs unmodified.

2 weeks agolib/ldap: parse naming contexts into a pooled string list
Arran Cudbard-Bell [Fri, 17 Jul 2026 22:24:42 +0000 (18:24 -0400)] 
lib/ldap: parse naming contexts into a pooled string list

One allocation now covers the pointer array and the strings. Parse failures are warned about instead of being silently ignored.

2 weeks agoutil: add talloc_str_array_len for NULL terminated string arrays
Arran Cudbard-Bell [Fri, 17 Jul 2026 22:24:42 +0000 (18:24 -0400)] 
util: add talloc_str_array_len for NULL terminated string arrays

Reads the string count from the talloc array header instead of walking the array.

2 weeks agolib/ldap: map attribute values in place
Arran Cudbard-Bell [Fri, 17 Jul 2026 19:35:16 +0000 (15:35 -0400)] 
lib/ldap: map attribute values in place

fr_ldap_map_getvalue now drains a value iterator instead of a duplicated berval array, and the map, check and valuepair readers iterate values straight out of the result message. The map proc's synthetic dn result is replaced by the exported fr_ldap_map_getdn callback, removing fr_ldap_result_t.

2 weeks agolib/ldap: add fr_ldap_value_iter_t for in place value iteration
Arran Cudbard-Bell [Fri, 17 Jul 2026 19:01:55 +0000 (15:01 -0400)] 
lib/ldap: add fr_ldap_value_iter_t for in place value iteration

The iterator is now the single implementation of the entry walk, with fr_ldap_result_values_len, fr_ldap_str_list_afrom_result and fr_ldap_entry_value_find rewritten on top of it. Group memberships are also iterated in place, removing the duplication of every membership value during collection.

2 weeks agorlm_ldap: merge profile DN sources into one pooled allocation
Arran Cudbard-Bell [Fri, 17 Jul 2026 18:49:49 +0000 (14:49 -0400)] 
rlm_ldap: merge profile DN sources into one pooled allocation

fr_ldap_str_list_afrom_result gains leading slots the caller fills with borrowed strings, so the default, group and user profile DNs merge into a single pooled array with the user values read in place from the result message. The now unused fr_ldap_berval_to_string_list is removed.

2 weeks agolib/ldap: add fr_ldap_entry_value_find for in place value access
Arran Cudbard-Bell [Fri, 17 Jul 2026 18:01:30 +0000 (14:01 -0400)] 
lib/ldap: add fr_ldap_entry_value_find for in place value access

Returns the first value of an attribute referenced in place from the result message, replacing ldap_get_values_len at call sites which only read a single value. Each converted site loses several allocations and a duplicate of the value bytes.

2 weeks agorlm_ldap: read profile references from user and group objects
Arran Cudbard-Bell [Fri, 17 Jul 2026 17:02:28 +0000 (13:02 -0400)] 
rlm_ldap: read profile references from user and group objects

Group object DNs are collected during membership resolution, then the profile bearing groups are fetched in one search with the profile attribute presence asserted in the filter, and their profiles apply between the default and the user object's. The profile attributes are now configured per object type as user { profile_attribute } and group { profile_attribute }, applied independently, and the profile { attribute } pair is deprecated.

2 weeks agolib/ldap: add functions for copying result values into a string list
Arran Cudbard-Bell [Fri, 17 Jul 2026 15:31:15 +0000 (11:31 -0400)] 
lib/ldap: add functions for copying result values into a string list

fr_ldap_result_values_len sums an attribute's values across every entry of a result, so fr_ldap_str_list_afrom_result can build an exactly sized string list from one pooled allocation. Values are referenced in place from the result message, the only copies made are the strings in the list.

2 weeks agoutil: add talloc_str_list_t string list functions
Arran Cudbard-Bell [Fri, 17 Jul 2026 15:30:26 +0000 (11:30 -0400)] 
util: add talloc_str_list_t string list functions

The list tracks an append cursor and the slot reserved for the NULL terminator, so appends cost no scans and batches cost at most one reallocation. Where talloc_pooled_object is available the list, its pointer array and every appended string come from a single talloc pool.

2 weeks agorlm_ldap: add whoami xlat
Arran Cudbard-Bell [Fri, 17 Jul 2026 02:20:33 +0000 (22:20 -0400)] 
rlm_ldap: add whoami xlat

%ldap.whoami() runs the RFC 4532 Who am I? extended operation on the module's admin connections and returns the resolved authorization identity, stripping any dn: prefix.

2 weeks agoadd TCP tests for radclient
Alan T. DeKok [Fri, 17 Jul 2026 12:37:25 +0000 (08:37 -0400)] 
add TCP tests for radclient

which test both the client functionality and the server

2 weeks agotreat "fail assigning ID" on fixed ID as permanent error
Alan T. DeKok [Fri, 17 Jul 2026 12:36:25 +0000 (08:36 -0400)] 
treat "fail assigning ID" on fixed ID as permanent error

2 weeks agocheck for more corner cases in radius tracking list
Alan T. DeKok [Fri, 17 Jul 2026 12:36:02 +0000 (08:36 -0400)] 
check for more corner cases in radius tracking list

2 weeks agomore descriptive errors in radclient
Alan T. DeKok [Thu, 16 Jul 2026 23:43:39 +0000 (19:43 -0400)] 
more descriptive errors in radclient

2 weeks agoinitialize length and use correct checks
Alan T. DeKok [Thu, 16 Jul 2026 23:35:27 +0000 (19:35 -0400)] 
initialize length and use correct checks

2 weeks agocorrectly set output for partial reads
Alan T. DeKok [Thu, 16 Jul 2026 23:35:00 +0000 (19:35 -0400)] 
correctly set output for partial reads

2 weeks agoprint out useful errors in radclient
Alan T. DeKok [Thu, 16 Jul 2026 23:10:49 +0000 (19:10 -0400)] 
print out useful errors in radclient

2 weeks agofix typo
Alan T. DeKok [Thu, 16 Jul 2026 23:10:40 +0000 (19:10 -0400)] 
fix typo

2 weeks agomake cf_pair_replace_or_add() take "const"
Alan T. DeKok [Thu, 16 Jul 2026 20:22:53 +0000 (16:22 -0400)] 
make cf_pair_replace_or_add() take "const"

which is friendlier to the callers

2 weeks agomash dynamic client flag in child listeners
Alan T. DeKok [Thu, 16 Jul 2026 20:03:00 +0000 (16:03 -0400)] 
mash dynamic client flag in child listeners

so that they don't check the list of networks.  All of the network
and dynamic client checks are handled by the parent listener

2 weeks agolib/ldap: run directory discovery during connection establishment
Arran Cudbard-Bell [Fri, 17 Jul 2026 00:15:38 +0000 (20:15 -0400)] 
lib/ldap: run directory discovery during connection establishment

The rootDSE query previously ran as an ordinary trunk request, so the first requests on a fresh trunk could run before discovery results were parsed. Connections now perform discovery in a new DISCOVER state before signalling connected, and trunks always start at least one connection so referral trunk watches still fire.

2 weeks agorlm_ldap: add tests covering the profile search_mode matrix
Arran Cudbard-Bell [Thu, 16 Jul 2026 22:22:32 +0000 (18:22 -0400)] 
rlm_ldap: add tests covering the profile search_mode matrix

Fixture profiles carry priorities running opposite to their list order so seq and bulk application order differ observably. Zero result and default-only paths are covered for both modes.

2 weeks agorlm_ldap: add profile search_mode option
Arran Cudbard-Bell [Thu, 16 Jul 2026 22:22:31 +0000 (18:22 -0400)] 
rlm_ldap: add profile search_mode option

seq keeps one search per profile DN, applied in list order with the default profile first. bulk retrieves every profile with a single sorted search matching objects by DN, requiring base scope and sort_by, and auto picks bulk when both hold, otherwise seq.

2 weeks agolib/ldap: add helpers for retrieving sets of objects by DN
Arran Cudbard-Bell [Thu, 16 Jul 2026 22:22:31 +0000 (18:22 -0400)] 
lib/ldap: add helpers for retrieving sets of objects by DN

fr_ldap_directory_common_base_find resolves DNs to a covering naming context using a hash table built when the rootDSE is parsed, and fr_ldap_filter_afrom_dn_list builds the matching filter using the directory's dn_attr, which fr_ldap_directory_alloc now defaults to entryDN before discovery completes. fr_ldap_berval_to_string_list converts berval values to a NULL terminated string list carved from a single talloc pool.

2 weeks agorlm_ldap: add dn_attribute config option
Arran Cudbard-Bell [Thu, 16 Jul 2026 18:45:57 +0000 (14:45 -0400)] 
rlm_ldap: add dn_attribute config option

Names the attribute used to match an entry's own DN in a search filter, defaulting per detected directory type (distinguishedName on Active Directory and Samba, RFC 5020 entryDN elsewhere).

2 weeks agolib/ldap: expose connection state machine callbacks
Arran Cudbard-Bell [Thu, 16 Jul 2026 18:45:14 +0000 (14:45 -0400)] 
lib/ldap: expose connection state machine callbacks

Callers now pass fr_ldap_connection_init, fr_ldap_trunk_connection_init and fr_ldap_connection_close directly to connection_alloc(), replacing fr_ldap_connection_state_alloc(). Trunk connections share the ttrunk's fr_ldap_directory_t, which is now allocated with the trunk so the pointer is valid when the initial connections spawn.

2 weeks agotweak use of "use_connected"
Alan T. DeKok [Thu, 16 Jul 2026 20:12:18 +0000 (16:12 -0400)] 
tweak use of "use_connected"

2 weeks agoci: publish profiling results to cinfra-ca.inkbridge.io (#5902)
Marc-Andre Casavant [Thu, 16 Jul 2026 15:46:53 +0000 (11:46 -0400)] 
ci: publish profiling results to cinfra-ca.inkbridge.io (#5902)

* ci: publish profiling results to cinfra-ca.inkbridge.io/profiling/data

* ci: address review feedback on the profiling publish (#5902)

* ci: check profiling results of latest vs previous

2 weeks agorlm_krb5: assume thread-safety when cross-compiling (#5903)
Alexandru Ardelean [Thu, 16 Jul 2026 13:52:33 +0000 (16:52 +0300)] 
rlm_krb5: assume thread-safety when cross-compiling (#5903)

When cross-compiling, the autoconf test program for krb5_is_thread_safe()
cannot be run on the host. Previously this left krb5threadsafe empty,
which is incorrect for all modern krb5 builds.

Fix by defaulting to thread-safety when the test cannot be performed.

Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
2 weeks agocf_section_dup: descend into child sections when copying (#5904)
Ethan Thompson [Thu, 16 Jul 2026 12:25:30 +0000 (08:25 -0400)] 
cf_section_dup: descend into child sections when copying (#5904)

The iterative rewrite in 013911166c allocated a copy of each nested
section but never walked into it, so pairs and subsections inside a
duplicated section were silently dropped. Add the missing descent,
and a regression test that duplicates a section with a nested
subsection containing multiple pairs.

2 weeks agoeap_aka_sim: fix SIM-SQN check that rejected every value (#5905)
Pau Nadeu [Thu, 16 Jul 2026 12:23:37 +0000 (15:23 +0300)] 
eap_aka_sim: fix SIM-SQN check that rejected every value (#5905)

vector_umts_from_quintuplets() validated control.SIM-SQN by comparing
vp_length against MILENAGE_SQN_SIZE.  SIM-SQN is FR_TYPE_UINT64, and
vp_length is only meaningful for variable length types -- it is 0 for
numeric boxes -- so the comparison could never succeed:

    control.SIM-SQN incorrect length.  Expected 6 bytes, got 0 bytes
    Failed retrieving UMTS vectors

Every request supplying control.SIM-SQN alongside quintuplets was
rejected.  Nothing else treats the attribute as octets:
vector_umts_from_ki() reads it as vp_uint64 with no length check, and the
SQN/AK derivations further down vector_umts_from_quintuplets() read
vp_uint64 as well.

Replace the length check with a range check.  SQN is 48 bits and
uint48_to_buff() silently truncates anything wider, so reject those
values rather than derive AK from a mangled SQN.

The path is reachable when the server has no local Ki and takes
quintuplets from an external source, such as vectors fetched from a 3GPP
HSS over SWx.  That is also the only way to satisfy the control.SIM-SQN
requirement RESUME(recv_aka_synchronization_failure) imposes after a
peer sends AKA-Synchronization-Failure, so SQN resync could not complete.

2 weeks agoadd note on connected UDP sockets
Alan T. DeKok [Wed, 15 Jul 2026 18:03:47 +0000 (14:03 -0400)] 
add note on connected UDP sockets

which apparently work now

remove redundant checks for dst_ipaddr->af, and make the error
messages clearer

2 weeks agofix typo in title indentation
Alan T. DeKok [Wed, 15 Jul 2026 18:04:34 +0000 (14:04 -0400)] 
fix typo in title indentation

2 weeks agoRemove spurious policy from sample default virtual server
Nick Porter [Tue, 14 Jul 2026 16:34:03 +0000 (17:34 +0100)] 
Remove spurious policy from sample default virtual server

2 weeks agoci: bump FreeBSD pip package to py312-pip
Arran Cudbard-Bell [Tue, 14 Jul 2026 14:47:25 +0000 (10:47 -0400)] 
ci: bump FreeBSD pip package to py312-pip

FreeBSD's package repos dropped the python 3.11 flavour, py312 is the current default.

2 weeks agojson: skip json_object_put leak assert on json-c >= 0.19
Arran Cudbard-Bell [Tue, 14 Jul 2026 14:43:10 +0000 (10:43 -0400)] 
json: skip json_object_put leak assert on json-c >= 0.19

json-c 0.19 returns 0 from json_object_put() for freed scalars and empty containers, so the return value can't identify leaked references. Fix proposed upstream in json-c/json-c#945.

2 weeks agoadd %module.call()
Alan T. DeKok [Tue, 14 Jul 2026 11:58:29 +0000 (07:58 -0400)] 
add %module.call()

and update the home server / proxy documentation to match

2 weeks agoadd %module.call()
Alan T. DeKok [Tue, 14 Jul 2026 11:58:29 +0000 (07:58 -0400)] 
add %module.call()

with some rather severe limitations, but that's OK

2 weeks agochange variable name
Alan T. DeKok [Tue, 14 Jul 2026 11:55:12 +0000 (07:55 -0400)] 
change variable name

to make it clearer that the function is generic

2 weeks agodelay check for virtual server until we need to dereference it
Alan T. DeKok [Tue, 14 Jul 2026 02:26:25 +0000 (22:26 -0400)] 
delay check for virtual server until we need to dereference it

2 weeks agomake error message more descriptive
Alan T. DeKok [Tue, 14 Jul 2026 01:50:03 +0000 (21:50 -0400)] 
make error message more descriptive

2 weeks agoaccount for packet header when calling memmove() in radclient
Alan T. DeKok [Tue, 14 Jul 2026 01:37:45 +0000 (21:37 -0400)] 
account for packet header when calling memmove() in radclient

2 weeks agoloop over virtual modules, compiling them
Alan T. DeKok [Mon, 13 Jul 2026 22:24:08 +0000 (18:24 -0400)] 
loop over virtual modules, compiling them

2 weeks agoadd unlang_compile_virtual_module()
Alan T. DeKok [Mon, 13 Jul 2026 22:23:29 +0000 (18:23 -0400)] 
add unlang_compile_virtual_module()

as a minimal wrapper around unlang_compile_section()

2 weeks agoexport API to iterate over virtual modules
Alan T. DeKok [Mon, 13 Jul 2026 18:47:18 +0000 (14:47 -0400)] 
export API to iterate over virtual modules

2 weeks agocheck dictionaries in a virtual module.
Alan T. DeKok [Mon, 13 Jul 2026 18:00:23 +0000 (14:00 -0400)] 
check dictionaries in a virtual module.

this doesn't catch all of the situations, but it catches many of
them.

2 weeks agoRevert "disable json assert on OSX, it always fails"
Alan T. DeKok [Mon, 13 Jul 2026 17:52:37 +0000 (13:52 -0400)] 
Revert "disable json assert on OSX, it always fails"

This reverts commit b4789234503dd6d5f16ec5c08d2728dca7dfb630.

it randomly fails on other platforms, too

2 weeks agoadd check for "all same" modules and xlat_redundant
Alan T. DeKok [Mon, 13 Jul 2026 15:54:51 +0000 (11:54 -0400)] 
add check for "all same" modules and xlat_redundant

the previous commit was step 1, this is step 2.

2 weeks agodo not immediately resolve modules in a virtual module
Alan T. DeKok [Mon, 13 Jul 2026 15:43:23 +0000 (11:43 -0400)] 
do not immediately resolve modules in a virtual module

due to ordering issues, they may not have been loaded yet.

2 weeks agocheck for duplicate virtual modules, too
Alan T. DeKok [Mon, 13 Jul 2026 14:49:59 +0000 (10:49 -0400)] 
check for duplicate virtual modules, too

2 weeks agoupdate the example configuration for radius module
Alan T. DeKok [Mon, 13 Jul 2026 14:59:56 +0000 (10:59 -0400)] 
update the example configuration for radius module

so that it works

3 weeks agotweak "cron" documentation
Alan T. DeKok [Fri, 10 Jul 2026 18:57:47 +0000 (14:57 -0400)] 
tweak "cron" documentation

and show that it can be used as a watchdog timer.

3 weeks agoregenerate raddb configuration files from source
Alan T. DeKok [Fri, 10 Jul 2026 14:18:09 +0000 (10:18 -0400)] 
regenerate raddb configuration files from source

and word wrap them.

3 weeks agoword wrap config files after conf2adoc
Alan T. DeKok [Fri, 10 Jul 2026 14:17:52 +0000 (10:17 -0400)] 
word wrap config files after conf2adoc

3 weeks agomore cleanups for wrap program
Alan T. DeKok [Fri, 10 Jul 2026 14:17:01 +0000 (10:17 -0400)] 
more cleanups for wrap program

3 weeks agotweak whitespace for ```, etc.
Alan T. DeKok [Fri, 10 Jul 2026 13:47:45 +0000 (09:47 -0400)] 
tweak whitespace for ```, etc.

some of the files had quoted text which had extra indents, which
isn't needed and causes problems.

3 weeks agotweak doc.raddb rules
Alan T. DeKok [Fri, 10 Jul 2026 13:19:14 +0000 (09:19 -0400)] 
tweak doc.raddb rules

add "clean" rule, add rule for radrelay.conf

change rules so that for modules, their example configuration
is placed at the bottom of the converted file.  So that the
documentation is a bit clearer.

For everything else, the example configuration is inline with the
documentation.  For virtual servers, the docs say things like
"this next policy", which is confusing when the policy is at the
bottom of the file instead of in-line

3 weeks agoeap_aka_sim: allow externally-derived CK'/IK' for EAP-AKA' (#5894)
Pau Nadeu [Thu, 9 Jul 2026 21:52:39 +0000 (00:52 +0300)] 
eap_aka_sim: allow externally-derived CK'/IK' for EAP-AKA' (#5894)

* eap_aka_sim: allow externally-derived CK'/IK' for EAP-AKA'

In a 3GPP SWx deployment the HSS performs the EAP-AKA' key transform
itself (TS 33.402 Annex A) and returns CK'/IK' already bound to the
Access Network Identity. The server must then not derive CK'/IK' a
second time from CK/IK, or the MSK will not match the peer.

Add a per-instance config item derive_ck_ik_prime (default yes,
unchanged behavior) to the eap-aka-prime process module. When set to
no, the module reads CK'/IK' from the new control.CK-Prime /
control.IK-Prime attributes and fr_aka_sim_crypto_umts_kdf_1() skips
its local derivation.

- dictionary: add CK-Prime (284) and IK-Prime (285)
- keys: add ck_ik_prime_provided flag
- vector: add fr_aka_sim_vector_umts_ck_ik_prime_from_attrs()
- crypto: guard ck_ik_prime_derive() on the flag; add unit test
- process/eap_aka_prime: add derive_ck_ik_prime config item

The default leaves existing EAP-AKA' (local Milenage / AuC) behavior
byte-identical.

* eap_aka_sim: gate external CK'/IK' on attribute presence

Per arr2036 review on #5894: drop the derive_ck_ik_prime config knob
and route the external CK'/IK' path purely on the presence of
control.CK-Prime / control.IK-Prime in the request control list.

If the operator's quintuplet source (e.g. a 3GPP HSS over SWx that
performs the RFC 5448 / TS 33.402 Annex A transform itself) populates
control.CK-Prime, the AKA' KDF reads it from there. If the attributes
are absent the module falls back to the local derivation against
control.CK / control.IK as before.

Removes:
  - submodule_config entry for derive_ck_ik_prime in eap_aka_prime/base.c
  - derive_ck_ik_prime field on eap_aka_sim_process_conf_t
  - branch in state_machine.c that read inst->derive_ck_ik_prime

Functionally equivalent for the existing use case (eap-aka-prime site
with control.CK-Prime / control.IK-Prime populated by the quintuplet
fetch); plain EAP-AKA and EAP-AKA' without external keys are
unaffected.

* eap_aka_sim: distinguish absent vs invalid CK-Prime/IK-Prime

fr_aka_sim_vector_umts_ck_ik_prime_from_attrs() now returns three
states so the caller can tell a normal "fall back to local Annex A
derivation" path apart from a real configuration error:

  0  control.CK-Prime / control.IK-Prime both present and valid;
     keys->ck_ik_prime_provided is set and kdf_1 skips the local
     transform.

  1  Neither attribute is supplied.  Logged at RDEBUG3 only (the
     default AKA' path that derives CK'/IK' locally is the normal
     case for most callers); the caller falls through to kdf_1 which
     performs the Annex A derivation.

  -1 One of the two attributes is present but the other is missing,
     or either attribute has the wrong octet length.  Logged at
     REDEBUG (real configuration error); the state machine routes to
     common_failure_notification.

Updates the eap-aka-prime state-machine branch added in the previous
commit to use the new contract (goto failure only on -1).  Default
EAP-AKA' deployments that do not set CK-Prime/IK-Prime see no log
noise on a production debug level, matching pre-arr2036 behaviour
where the helper was never invoked unless derive_ck_ik_prime=no.

* eap_aka_sim: avoid duplicate control_pairs lookup for CK-Prime/IK-Prime

Per arr2036 review on #5894: pair lookups walk the request control
list, so doing them twice (once in the eap-aka-prime state machine, once
inside fr_aka_sim_vector_umts_ck_ik_prime_from_attrs) is wasteful.

The state machine now looks up control.CK-Prime and control.IK-Prime
once and passes the resulting fr_pair_t * values into the derivation
function.  The helper no longer touches the control list directly; it
just classifies the two pointers (neither / one / both) and validates
the octet length when both are supplied.

Signature change in base.h matches the new contract.  No behavioural
change for callers that previously got 0 / 1 / -1 returns.

* eap_aka_sim: drop unused inst declaration in send_aka_challenge_request

The only reference to inst in this RESUME was the old check on
inst->derive_ck_ik_prime, which was removed when the config knob was
dropped.  -Werror=unused-variable now flags the declaration.

3 weeks agorun "make format.raddb"
Alan T. DeKok [Thu, 9 Jul 2026 19:37:38 +0000 (15:37 -0400)] 
run "make format.raddb"

The configuration files have been reformatted, and the debian
"diff" regenerated.

The only changes should be indentation, and wrapping of text
which is inside of comment blocks.

3 weeks agoadd rule to format configuration files in the raddb directory
Alan T. DeKok [Thu, 9 Jul 2026 19:23:36 +0000 (15:23 -0400)] 
add rule to format configuration files in the raddb directory

3 weeks agodon't convert ".Title" in configuration files
Alan T. DeKok [Thu, 9 Jul 2026 19:33:21 +0000 (15:33 -0400)] 
don't convert ".Title" in configuration files

they have all been checked

3 weeks agoformatting of configuration files
Alan T. DeKok [Thu, 9 Jul 2026 19:26:39 +0000 (15:26 -0400)] 
formatting of configuration files

in preparation for auto-format

3 weeks agodocument, check, and set Server-ID
Alan T. DeKok [Thu, 9 Jul 2026 17:15:38 +0000 (13:15 -0400)] 
document, check, and set Server-ID

3 weeks agoparse and encode Server-ID in a DHCPv6 "listen" section
Alan T. DeKok [Thu, 9 Jul 2026 16:30:52 +0000 (12:30 -0400)] 
parse and encode Server-ID in a DHCPv6 "listen" section

3 weeks agotweak verify function to make it more forgiving
Alan T. DeKok [Thu, 9 Jul 2026 16:50:33 +0000 (12:50 -0400)] 
tweak verify function to make it more forgiving

the various users of packet_ctx->duid already check it

3 weeks agoreject invalid Option-Request, rather than accepting it.
Alan T. DeKok [Thu, 9 Jul 2026 15:56:17 +0000 (11:56 -0400)] 
reject invalid Option-Request, rather than accepting it.

3 weeks agoenforce data type "attr" checks
Alan T. DeKok [Thu, 9 Jul 2026 15:48:24 +0000 (11:48 -0400)] 
enforce data type "attr" checks

3 weeks agoWe don't support DHCPv6 Reconfigure messages.
Alan T. DeKok [Thu, 9 Jul 2026 15:14:33 +0000 (11:14 -0400)] 
We don't support DHCPv6 Reconfigure messages.

Because (a) most clients don't support it, and (b) we still need
to write the code to handle the Auth option.  Which includes a
bunch of additional requirements about storing keys and replay
counters.

3 weeks agodisable json assert on OSX, it always fails
Alan T. DeKok [Wed, 8 Jul 2026 15:50:08 +0000 (11:50 -0400)] 
disable json assert on OSX, it always fails

3 weeks agoremove '.' titles, they're wrong
Alan T. DeKok [Wed, 8 Jul 2026 15:29:56 +0000 (11:29 -0400)] 
remove '.' titles, they're wrong

3 weeks agodisallow bad filter codes fixes #5879
Alan T. DeKok [Wed, 8 Jul 2026 12:23:10 +0000 (08:23 -0400)] 
disallow bad filter codes  fixes #5879

3 weeks agoregenerate patch after split of user / group in radiusd.conf
Alan T. DeKok [Tue, 7 Jul 2026 17:52:30 +0000 (13:52 -0400)] 
regenerate patch after split of user / group in radiusd.conf

3 weeks agoskip markdown, text, and make files
Alan T. DeKok [Tue, 7 Jul 2026 15:23:37 +0000 (11:23 -0400)] 
skip markdown, text, and make files

3 weeks agoseparate user/group documentation
Alan T. DeKok [Tue, 7 Jul 2026 15:02:34 +0000 (11:02 -0400)] 
separate user/group documentation

3 weeks agolib/server/cf_parse: fix || vs && in FR_CONF_FLAG_CHECK fr_ipaddr_t* case (disables...
Alexander Bainbridge-Sedivy [Fri, 26 Jun 2026 13:26:18 +0000 (09:26 -0400)] 
lib/server/cf_parse: fix || vs && in FR_CONF_FLAG_CHECK fr_ipaddr_t* case (disables type check)

3 weeks agoinclude json/base.h instead of local include
Alan T. DeKok [Tue, 7 Jul 2026 14:09:05 +0000 (10:09 -0400)] 
include json/base.h instead of local include

which gets all of the DIAG stuff missing when we have a local
include of json-c/json.h

3 weeks agolib/server/global_lib: NULL deref in lib_autofree when a library was never instantiat...
Alexander Bainbridge-Sedivy [Fri, 26 Jun 2026 20:46:36 +0000 (16:46 -0400)] 
lib/server/global_lib: NULL deref in lib_autofree when a library was never instantiated (sibling init failure)

3 weeks agolib/server/exfile: fix fd leak in exfile_open_lock when stat() of cached filename...
Alexander Bainbridge-Sedivy [Fri, 26 Jun 2026 19:59:41 +0000 (15:59 -0400)] 
lib/server/exfile: fix fd leak in exfile_open_lock when stat() of cached filename fails

3 weeks agolib/server/exec_legacy: fix radius_exec_program_legacy doc — request is non-NULL...
Alexander Bainbridge-Sedivy [Fri, 26 Jun 2026 19:05:17 +0000 (15:05 -0400)] 
lib/server/exec_legacy: fix radius_exec_program_legacy doc — request is non-NULL (nonnull(3)), not '(may be NULL)'

3 weeks agoexec_legacy: fork failure with exec_wait=false registers event waiter on invalid PID
Alexander Bainbridge-Sedivy [Fri, 26 Jun 2026 18:52:35 +0000 (14:52 -0400)] 
exec_legacy: fork failure with exec_wait=false registers event waiter on invalid PID

3 weeks agoexec.c: NULL deref in fr_exec_value_box_list_to_argv when argument list is empty
Alexander Bainbridge-Sedivy [Fri, 26 Jun 2026 18:28:30 +0000 (14:28 -0400)] 
exec.c: NULL deref in fr_exec_value_box_list_to_argv when argument list is empty

3 weeks agolib/server/command: fr_command_complete records wrong name when descending into inter...
Alexander Bainbridge-Sedivy [Fri, 26 Jun 2026 15:25:43 +0000 (11:25 -0400)] 
lib/server/command: fr_command_complete records wrong name when descending into intermediate command

3 weeks agolib/server/cf_util: fix FR_TIMESPEC_TO_MS using tv_usec (nonexistent on struct timesp...
Alexander Bainbridge-Sedivy [Fri, 26 Jun 2026 13:54:31 +0000 (09:54 -0400)] 
lib/server/cf_util: fix FR_TIMESPEC_TO_MS using tv_usec (nonexistent on struct timespec) instead of tv_nsec

3 weeks agolib/server/cf_parse: OOB read in cf_pair_unescape() on trailing backslash
Alexander Bainbridge-Sedivy [Wed, 24 Jun 2026 20:57:31 +0000 (16:57 -0400)] 
lib/server/cf_parse: OOB read in cf_pair_unescape() on trailing backslash

3 weeks agolib/server/cf_file: OOB read in process_include() when $INCLUDE target expands to...
Alexander Bainbridge-Sedivy [Wed, 24 Jun 2026 19:53:37 +0000 (15:53 -0400)] 
lib/server/cf_file: OOB read in process_include() when $INCLUDE target expands to empty string

3 weeks agolib/server/cf_file: off-by-one heap write in ${/path} expansion when st_size under...
Alexander Bainbridge-Sedivy [Wed, 24 Jun 2026 19:37:59 +0000 (15:37 -0400)] 
lib/server/cf_file: off-by-one heap write in ${/path} expansion when st_size under-reports readable bytes (procfs/devices/pipes)

3 weeks agolib/redis/cluster: fix NULL deref in cluster_map_node_validate error path (non-array...
Alexander Bainbridge-Sedivy [Mon, 22 Jun 2026 18:30:00 +0000 (14:30 -0400)] 
lib/redis/cluster: fix NULL deref in cluster_map_node_validate error path (non-array node reply)

3 weeks agoadd an enforce CONF_SECTION_MAX_DEPTH
Alan T. DeKok [Mon, 6 Jul 2026 16:03:29 +0000 (12:03 -0400)] 
add an enforce CONF_SECTION_MAX_DEPTH

which is 256 for now.  Anyone who needs depths larger than that
is likely doing something very, very, wrong.

4 weeks agoupdate security policy and AI usage.
Alan T. DeKok [Thu, 2 Jul 2026 13:25:21 +0000 (09:25 -0400)] 
update security policy and AI usage.

Also addresses the proposed fix in #5898