pre-2.2.2: a bug in module return code evaluation / 2013101601

Jan Rafaj jr-freeradius at cedric.unob.cz
Wed Oct 16 14:23:20 CEST 2013


Hello,

I gave a try to current HEAD of the v2.x.x branch (commit 8925e16).

In sites-enabled/default, in 'authenticate { }' I have:

         Auth-Type MS-CHAP {
                 mschap {
                         ok = return
                         fail = 1
                         reject = 1
                         userlock = 1
                         invalid = 1
                 }
                 if (fail || reject || userlock || invalid) {
                         linelog.rejects.tunnelled
                         reject
                 }
         }

In 2.2.0, the corresponding debug output triggered by

   radmin -e "debug file mydebug.log" \
          -e "debug condition \"(User-Name =~ /testuser.*domain\.tld/)\""

was:

...
Tue Oct 15 22:55:03 2013 : Debug: [mschap]      expand: 
--nt-response=%{%{mschap:NT-Response}:-00} -> 
--nt-response=e78a6a598e4b23bdb5f2feebf9ce5f6ab43851421b6387df
Tue Oct 15 22:55:03 2013 : Debug: [mschap] External script failed.
Tue Oct 15 22:55:03 2013 : Debug: [mschap] FAILED: MS-CHAP2-Response is 
incorrect
Tue Oct 15 22:55:03 2013 : Debug: ++[mschap] returns reject
Tue Oct 15 22:55:03 2013 : Debug: ++? if (fail || reject || userlock || 
invalid)Tue Oct 15 22:55:03 2013 : Debug: ? Evaluating (fail ) -> FALSE
Tue Oct 15 22:55:03 2013 : Debug: ? Evaluating (reject ) -> TRUE
Tue Oct 15 22:55:03 2013 : Debug: ? Skipping (userlock )
Tue Oct 15 22:55:03 2013 : Debug: ? Skipping (invalid)
Tue Oct 15 22:55:03 2013 : Debug: ++? if (fail || reject || userlock || 
invalid) -> TRUE
Tue Oct 15 22:55:03 2013 : Debug: ++- entering if (fail || reject || 
userlock || invalid) {...}
...

while in pre-2.2.2 HEAD, the output is:

...
Tue Oct 15 22:42:45 2013 : Debug: [mschap]      expand: 
--nt-response=%{%{mschap:NT-Response}:-00} -> 
--nt-response=8c600892bca040638bfa1145278982c141b1bf9924ce5c1f
Tue Oct 15 22:42:45 2013 : Debug: [mschap] Exec: program returned: 1
Tue Oct 15 22:42:45 2013 : Debug: [mschap] External script failed.
Tue Oct 15 22:42:45 2013 : Debug: [mschap] FAILED: MS-CHAP2-Response is 
incorrect
Tue Oct 15 22:42:45 2013 : Debug: ++[mschap] = reject
Tue Oct 15 22:42:45 2013 : Debug: ++? if (fail || reject || userlock || 
invalid)Tue Oct 15 22:42:45 2013 : Debug: ? Evaluating (fail ) -> FALSE
Tue Oct 15 22:42:45 2013 : Debug: ? Evaluating (reject ) -> FALSE
Tue Oct 15 22:42:45 2013 : Debug: ? Evaluating (userlock ) -> FALSE
Tue Oct 15 22:42:45 2013 : Debug: ? Evaluating (invalid) -> FALSE
Tue Oct 15 22:42:45 2013 : Debug: ++? if (fail || reject || userlock || 
invalid) -> FALSE
Tue Oct 15 22:42:45 2013 : Debug: +} # group MS-CHAP = ok
...

As you can see, in pre-2.2.2, although the mschap module still
(correctly) returns 'reject', the condition evaluating 'reject'
incorrectly yields FALSE (it yields TRUE in 2.2.0). I think 
this is a bug (and it has forced me to downgrade back to 2.2.0). Please 
could you fix this?

Thanks a lot,

Jan



More information about the Freeradius-Users mailing list