]> git.ipfire.org Git - thirdparty/freeradius-server.git/log
thirdparty/freeradius-server.git
4 hours agoradtest: allow overriding NAS name via HOSTNAME env var (#5901) master
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 hours agodocs-v4: remove duplicate dictionary info from the dictionary tutorial. `xrefs` used... developer/alandekok
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.

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

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

4 days agorlm_ldap: add profile child_rdn developer/arr2036
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.

4 days 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.

4 days 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.

4 days 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.

4 days 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.

5 days 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.

5 days 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.

5 days 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.

5 days 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.

5 days 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.

5 days 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.

5 days 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

5 days 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

5 days 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

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

5 days 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

5 days 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

5 days 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

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

5 days 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

5 days 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

5 days 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.

5 days 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.

5 days 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.

5 days 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.

5 days 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).

5 days 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.

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

6 days 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

6 days 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>
6 days 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.

6 days 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.

7 days 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

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

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

8 days 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.

8 days 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.

8 days 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

8 days 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

8 days 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

8 days 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

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

8 days 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

8 days 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

8 days 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()

9 days 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

9 days 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.

9 days 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

9 days 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.

9 days 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.

9 days 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

9 days 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

12 days 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.

12 days 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.

12 days 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

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

12 days 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.

12 days 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

12 days 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.

13 days 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.

13 days 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

13 days 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

13 days 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

13 days 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

13 days 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

13 days 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

13 days 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.

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

13 days 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.

2 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

2 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

2 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

2 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

2 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

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

2 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)

2 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

2 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)

2 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

2 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)'

2 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

2 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

2 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

2 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

2 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

2 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

2 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)

2 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)

2 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.

2 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

3 weeks agodocs-v4: update format_raddb script so the .dotfiles are not included in the search...
nolade [Tue, 30 Jun 2026 20:50:58 +0000 (16:50 -0400)] 
docs-v4: update format_raddb script so the .dotfiles are not included in the search for target files

3 weeks agoRemove legacy crl functionality
Nick Porter [Thu, 25 Jun 2026 16:38:48 +0000 (17:38 +0100)] 
Remove legacy crl functionality

CRL checking should now be performed using `rlm_crl` in the `verify
certificate` section of a virtual server.

3 weeks agoSet last_write_success when a connection becomes connected
Nick Porter [Thu, 25 Jun 2026 15:41:43 +0000 (16:41 +0100)] 
Set last_write_success when a connection becomes connected

To give a base time that idle timeouts can be calculated from.

3 weeks agoDon't set connection shutdown timeout if deferred signals have changed state
Nick Porter [Thu, 25 Jun 2026 11:11:18 +0000 (12:11 +0100)] 
Don't set connection shutdown timeout if deferred signals have changed state

3 weeks agoHonour use_utc for default log destination
Nick Porter [Thu, 25 Jun 2026 09:47:12 +0000 (10:47 +0100)] 
Honour use_utc for default log destination

3 weeks agoCorrect parsing of main log timestamp option
Nick Porter [Thu, 25 Jun 2026 07:23:54 +0000 (08:23 +0100)] 
Correct parsing of main log timestamp option