that require one. Thus, EHLORHUBARB was interpreted as a valid command.
This bug exists in every version of Exim that I still have, right back
to 0.12.
-$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.382 2006/07/27 10:36:34 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.383 2006/07/27 11:29:32 ph10 Exp $
Change log file for Exim from version 4.21
-------------------------------------------
Change log file for Exim from version 4.21
-------------------------------------------
tests for valid domains and recipients precede the DNS black list and CSA
tests, on the grounds that those ones are more expensive.
tests for valid domains and recipients precede the DNS black list and CSA
tests, on the grounds that those ones are more expensive.
+PH/25 Exim was not testing for a space following SMTP commands such as EHLO
+ that require one. Thus, EHLORHUBARB was interpreted as a valid command.
+ This bug exists in every version of Exim that I still have, right back to
+ 0.12.
+
Exim version 4.62
-----------------
Exim version 4.62
-----------------
-/* $Cambridge: exim/src/src/smtp_in.c,v 1.40 2006/07/27 10:13:52 ph10 Exp $ */
+/* $Cambridge: exim/src/src/smtp_in.c,v 1.41 2006/07/27 11:29:32 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
/*************************************************
* Exim - an Internet mail transport agent *
for (p = cmd_list; p < cmd_list_end; p++)
{
for (p = cmd_list; p < cmd_list_end; p++)
{
- if (strncmpic(smtp_cmd_buffer, US p->name, p->len) == 0)
+ if (strncmpic(smtp_cmd_buffer, US p->name, p->len) == 0 &&
+ (smtp_cmd_buffer[p->len-1] == ':' || /* "mail from:" or "rcpt to:" */
+ smtp_cmd_buffer[p->len] == 0 ||
+ smtp_cmd_buffer[p->len] == ' '))
{
if (smtp_inptr < smtp_inend && /* Outstanding input */
p->cmd < sync_cmd_limit && /* Command should sync */
{
if (smtp_inptr < smtp_inend && /* Outstanding input */
p->cmd < sync_cmd_limit && /* Command should sync */
mail from:<root>
rcpt to:<xx@reLAY.ONE.ex>
rcpt to:<yy@relay.two.ex>
mail from:<root>
rcpt to:<xx@reLAY.ONE.ex>
rcpt to:<yy@relay.two.ex>
+rset
+helorhubarb
+mailfrom:<>
+rsettling
250 OK\r
250 Accepted\r
550 relay not permitted\r
250 OK\r
250 Accepted\r
550 relay not permitted\r
+250 Reset OK\r
+500 unrecognized command\r
+500 unrecognized command\r
+500 unrecognized command\r
221 myhost.test.ex closing connection\r
abcd@test.ex
router = select, transport = dummy
221 myhost.test.ex closing connection\r
abcd@test.ex
router = select, transport = dummy