what are the intended semantics of paircompare()?
aland at deployingradius.com
Sat Aug 16 07:40:16 CEST 2008
John Dennis wrote:
> I'm in the process of debugging a problem and it seems to me
> paircompare() (in src/main/valuepair.c) is returning the wrong result.
> But I might be ascribing the wrong semantics to the function. Here is
> what I think it's supposed to do, is this correct?
The semantics are... what's grown over time, to be compatible with the
historical implementation of the "users" file.
> If any check attribute matches (according to it's operator) any
> attribute of the same attribute type in the request then return 0 else
> return ~0.
> Phrased another way it's a short circuit "logical or", e.g. as long as
> something matches it succeeds.
> If that is the intended semantics then I think there are couple of bugs
> in it and I'll provide a patch along with an explanation, otherwise
> could you set me straight on what it's behaviour is supposed to be?
I think the main issues are that (foo != bar) SHOULD be !(foo == bar),
and it's not. They're different.
I'll look at the patches, but I'm very wary of changing the
functionality. There are 100,000 sites using this code, and I want to
be sure any change will have limited effect.
More information about the Freeradius-Users