Bug in authprogs/domain and doc/external-auth
jeff at litech.org
Wed Mar 9 01:27:57 UTC 2005
On Mar 8, 2005, at 5:42 PM, Todd Olson wrote:
> authprogs/domain does not work in INN 2.4.1
Hi Todd -- thanks for the reports. (Glad to see you're finally taking
> The problem can be fixed by changing
> printf("User:%s", host);
> to read
> printf("User:%s\n", host);
I agree. This is a result of nnrpd/perm.c:HandleProgInput calling "f"
on each line but not on the trailing bit in the buffer if there is no
terminal newline. Given that doc/external-auth indicates the newline
is expected, I'll fix domain.c in CVS.
We do have test cases for domain.c; unfortunately /bin/sh is removing
the whitespace before comparing for correct output. Russ, do you think
this is worth fiddling some workaround into domain.t for?
> On a related note, doc/external-auth states
> "If the program succeeds, it may return a username string ..."
> which suggests that the return is optional
> but testing shows that the return is *required*
> 'may' should be changed to 'must'
Hmm. I agree with your analysis of the current behavior. However, I
wonder if the documentation is correct, and the code should be modified
so that, if no username is returned, the default: in readers.conf is
used. (I haven't looked at the code, but I imagine that would be
Thoughts on what the correct behavior should be?
> Further, it goes on to say that the line should be exactly
> but testing shows that the line only works if the last char is \n
> so this should either read
Yeah, my reading of the code backs up your observation; looks like
nnrpd generates \r\n but will accept \n alone as valid.
Throughout what became doc/external-auth, Aidan's original
documentation used \r, and while it looked odd, I never got around to
investigating convincingly enough to change it. Russ, I'm not
completely crazy about this, am I?
Jeffrey M. Vinocur
jeff at litech.org
More information about the inn-workers