I have patch netqmail-1.05 with netqmail-1.05-tls-smtpauth-20040207.patch
and have had a problem with both types of AUTH PLAIN. I am always getting
'501 malformed auth input' with either of the following :-
1) AUTH PLAIN with base64 on the same line
2) AUTH PLAIN on its own line followed by base64 on a following line
I have narrowed this down to the version of base64.c that is included in
the patch.
In auth_plain() the following happens :-
if (r = b64decode(authin.s,authin.len,&resp) ...
This is fine, resp.s is a pointer to the decoded input from either type of
AUTH PLAIN command, BUT resp.len is 0. The base64.c shipped in the patch
does not update the len part of the string struct. I have reverted to the
base64.c that shipped originally with Mrs Brisby's patch and all works
fine.
As a point of interest I had a look to see why AUTH LOGIN works fine and
the code for AUTH LOGIN does not use resp.len for anything where as AUTH
PLAIN uses resp.len to see if there is enough information to break it
down into id, user, pass.
I think I am right, I am just suprised that it has not been seen before.
If there is a problem with the base64.c in Mrs Brisby's patch let me know
and I will have a look at fixing the one included in Bill Shupp's patch.