safe_characters issue

Fabrice Durand fdurand at inverse.ca
Wed Jun 17 21:23:48 CEST 2020


Hello Alan,

sorry to bother you.

I did one last test and built new binary and revert few commits in 
3.0.21 (attached to this email) in the rlm_sql modules and now 
freeradius take the safe_characters values from sql_degraded{...} 
section and not the sql {...} section anymore. (like it worked in 
freeradius 3.0.13)

My skills in C are not good enough to find the issue but it looks that 
the "sql_escape_func" use the main sql section.

Regards

Fabrice


Le 20-06-17 à 12 h 10, Alan DeKok a écrit :
> On Jun 17, 2020, at 11:11 AM, Fabrice Durand <fdurand at inverse.ca> wrote:
>> I am not sure it's the case, the only place i defined safe_characters is in mods-enabled/sql
>    OK.
>
>> I attached 2 debug outputs and the sql files used , the one with safe_characters defined in the sql {...} section (who works) and the other one with safe_characters defined in sql sql_degraded{...} (that doesn't works)
>>
>> For me it looks that even if you define safe_characters in another section than the sql {...} one the code doesn't use it and use the one from the sql {...} section instead.
>    Except that the code *always* looks at definition of safe_characters in the current configuration.
>
>    There's nothing in the rlm_sql source which says "search for the base SQL module and use that".
>
>> I did exactly the same tests on the FreeRADIUS version 3.0.13 (i am using another path for the configuration files than /etc/radiusd, so the files didn't changed) and it takes the safe_characters defined in the sql_degraded section.
>>
>> Btw setting the safe_characters in sql{...} fixed my issue, but it looks to be a regression.
>    I just took the current v3.0.x head, and created a "sql sql2" module, which uses MySQL.  The main "sql" module is using sqlite.  I edited the safe_characters definition in mods-config, and I see:
>
> $ radiusd -X | grep safe
>    	safe_characters = "@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_: /äéöüàâæçèéêëîïôœùûüaÿÄÉÖÜßÀÂÆÇÈÉÊËÎÏÔŒÙÛÜŸ"
>    	safe_characters = "YYY at abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_: /"
>    	safe_characters = "XXX at abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_: /"
>
>    The first one is from rlm_expr.  The second is from the sqlite definition that I edited.  The third one is from the MySQL definition that I edited.
>
>    And from the debug output you posted:
>
>    # Loading module "sql_degraded" from file /usr/local/pf/raddb/mods-enabled/sql
>    sql sql_degraded {
>    	driver = "rlm_sql_mysql"
>    	server = "127.0.0.1"
>    	port = 3306
>    	login = "pf"
>    	password = <<< secret >>>
>    	radius_db = "pf"
>    	read_groups = yes
>    	read_profiles = yes
>    	read_clients = no
>    	delete_stale_sessions = yes
>    	sql_user_name = "%{User-Name}"
>    	default_user_profile = ""
>    	client_query = "SELECT id,nasname,shortname,type,secret FROM nas"
>    	group_membership_query = ""
>    	safe_characters = "@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_: /(),'"
>
>
>    So that seems to work.
>
>    Alan DeKok.
>
>
> -
> List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html

-- 
Fabrice Durand
fdurand at inverse.ca ::  +1.514.447.4918 (x135) ::  www.inverse.ca
Inverse inc. :: Leaders behind SOGo (http://www.sogo.nu) and PacketFence (http://packetfence.org)



More information about the Freeradius-Users mailing list