start of autoload and validation for dictionaries.
if we load protocol FOO, we now look for libfreeradius-FOO
which *should* already be loaded. i.e. when the application links
to libfreeradius-radius and calls fr_radius_init(), that function
loads the RADIUS dictionaries. Which now link back to the library.
The dictionary code then looks for a symbol called
and saves a pointer to that structure in the dictionary. We can
now have protocol-specific validation functions.
Alan T. DeKok@2019-11-04T21:18:06Z
Take a pass through and add MEM() where it should be used, and remove it from the protocol encoder/decoders and utilities
It may be useful to set a size limit on the context we pass to the decoders to prevent an attacker exploiting a logic bug. In this case we want the decoder to handle the memory allocation failure gracefully.