Regex problem with 3.0.5 and correct_escapes = false
Small observation on the backwards compatibility of regex handling. My existing config has the following line within the sites authorised section; If ( User-Name =~ /(.*)\/(.*)\\^(.*)/i <file:///\\%5e(.*)\i> ) { Yes this is nasty, but required to handle a specific format and worked under 3.0.x up to 3.0.5. Under 3.0.5 with correct_escapes set to false this is now generating an error of "Unexpected test after condition" on the second '('. I am presuming the '\/' is being seen as the end of the regex within the parser. Setting correct_escapes to true, and changing the regex to /(.*)\/(.*)\^(.*)/i <file:///\\%5e(.*)\i> works. I am not convinced this is worth fixing, after I think everyone would agree the regex reads better now. However, it maybe worth extending the radius.conf comment around correct_escapes to include this edge case. Geoff
unbeliever012000 wrote:
My existing config has the following line within the sites authorised section;
If ( User-Name =~ /(.*)\/(.*)\\^(.*)/i <file:///\\%5e(.*)\i> ) {
That's arguably wrong, even for the old code. If it worked, it was a bug.
Yes this is nasty, but required to handle a specific format and worked under 3.0.x up to 3.0.5. Under 3.0.5 with correct_escapes set to false this is now generating an error of “Unexpected test after condition” on the second ‘(‘. I am presuming the ‘\/’ is being seen as the end of the regex within the parser.
Yes. It *should* have been '\\/'
Setting correct_escapes to true, and changing the regex to /(.*)\/(.*)\^(.*)/i <file:///\\%5e(.*)\i> works. I am not convinced this is worth fixing, after I think everyone would agree the regex reads better now. However, it maybe worth extending the radius.conf comment around correct_escapes to include this edge case.
It's a small edge case. I don't see it as a major issue. Alan DeKok.
participants (2)
-
Alan DeKok -
unbeliever012000